Method, system, and apparatus for executing an action related to user selection

ABSTRACT

A computer-implemented method is disclosed. The method involves displaying a first user interface associated with a primary application on a display of a computing device; receiving, via the primary application, first input data associated with the first user interface; and displaying one or more identifiers on the display based on the first input data. Each identifier is associated with one secondary application of a plurality of different secondary applications available to the computing device, and each different secondary application is operable to perform a function different from the primary application. The method also involves selecting, in response to a user input associated with one identifier of the one or more identifiers, a select secondary application from amongst the plurality of different secondary applications; causing the select secondary application to assume control of at least a portion of the display; and displaying a second user interface associated with the select secondary application on the display. The method also involves receiving, via the select secondary application, second input data associated with the second user interface; and performing, via the select secondary application, at least one operation based on the first input data and the second input data, to produce output data. The method also involves displaying the output data on the display, and returning control of the at least a portion of the display to the primary application.

CROSS-REFERENCES PARAGRAPH FOR RELATED APPLICATIONS

This application is a continuation U.S. application Ser. No. 14/168,309, filed Jan. 30, 2014, the entire contents of which are incorporated herein by reference in their entirety for all purposes. This application is also a continuation of PCT/CA2013/000451, filed May 6, 2013, and a continuation of PCT/CA2013/000094, filed Feb. 4, 2013.

BACKGROUND OF THE INVENTION 1. Field of Invention

This invention relates to executing an action related to user selection and more particularly to a method, system and apparatus for executing an action related to data input by a user via a data entry system.

2. Description of Related Art

When a user enters data into a smart phone or other personal computing device it is often desirable to look up information related to the text or other data that the user is entering or looking at via the device or to look up information related to the context. For example, users may wish to use applications other than the one they are currently using to look up such related information. In conventional systems, in order to retrieve related information, the options available for a user to do so are limited, awkward, and inefficient. For instance, the user must exit the text entry application that they are using, open a new application from which they can generate the information they wish to look up, retrieve the information, and then return to the text entry or display application they were previously using. Further, conventional keyboards and applications do not dynamically make available related application icons for user interaction based on what the user has typed or has selected on a display. Accordingly, users often struggle with having to follow similar steps for opening a related application regardless as to whether it could be predictable that the user will require such an application. Further, once the user has opened the related application, the user must often reenter information or text that the user has already entered in the text entry application. Accordingly, users often find that they are required to enter the same text multiple times when using a conventional text entry application in conjunction with a related application.

SUMMARY OF THE INVENTION

In general, there is provided a method, system and apparatus for executing an action on a computing device related to input received from a user in connection with another action.

In accordance with one aspect of the invention, there is provided a method of executing an action related to data input by a user via a personal computing device. The method involves receiving first input data via a keyboard, and associating the first input data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application. The method also involves monitoring for user selection of the icon, and, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

The first input data may be associated with a primary input action via a primary application.

Activating the secondary application may involve activating the secondary application to support a secondary input action different from the primary input action.

Activating the secondary application may involve activating the secondary application to support the secondary input action while the secondary application remains active.

Causing the icon to be displayed on the display device may involve causing the icon to be displayed in a status notification bar or notification region on the display device.

Causing the keyboard to be displayed on the display device.

Causing the icon to be displayed on the display device may involve causing the icon to be displayed on the display device below the keyboard.

Causing the icon to be displayed on the display device may involve causing the icon to be displayed on the display device above the keyboard.

Causing the icon to be displayed on the display device may involve causing the icon to be displayed on the display device within the keyboard.

Causing the icon to be displayed on the display device may involve causing the icon to be displayed on the display device to a left or right of the keyboard.

The method may involve associating the first input data with at least one additional secondary application available to the user via the personal computing device by causing at least one additional icon to be displayed on the display device for selection, the at least one additional icon associated with the at least one additional secondary application.

Causing the icon to be displayed may involve associating the icon and the at least one additional icon with a group icon and displaying the group icon on the display device for selection, and, in response to detecting selection of the group icon, causing the icon and the at least one additional icon to be displayed on the display device.

Causing the icon to be displayed and causing the at least one additional icon to be displayed may involve causing the icon and the at least one additional to be displayed in order according to respective ranks associated with the icon and the at least one additional icon

The ranks may be based on respective historical selection frequencies associated with the icons and wherein causing the icon and the at least one additional icon to be displayed may involve causing the icon and the at least one additional icon to be displayed such that the icon and the at least one additional icon are displayed in order according to the historic selection frequencies associated with the icon and the at least one additional icon.

The method may involve causing the second data to be displayed on the display device.

The method may involve causing the second data to be stored in a database

The first input data may be stored in the database and causing the second data to be stored in the database may involve replacing the first input data stored in the database with the second data.

Causing the second data to be stored in the database may involve storing connecting text with the second data in the database.

Causing the second data to be stored in the database may involve causing the second data to be stored in a first location in the database and the method may involve receiving a paste message and, in response to receiving the paste message, copying the second data from the first location to a second location in the database such that the second data is displayed on the display device.

Activating the secondary application to generate the second data may involve causing the secondary application to store state information associated with the second data in the database, causing a resume state icon to be displayed on the display device for selection by the user, detecting selection of the resume state icon, and, in response to detecting selection of the resume state icon, reading the state information from the database and activating the secondary application to generate the second data for display on the display device based on the state information.

Associating the first input data with the secondary application may involve monitoring the first input data to determine if the first input data is associated with a predetermined category corresponding to the secondary application.

Monitoring the first input data to determine if the first input data is associated with the predetermined category may involve: applying a category test to the first input data to determine whether the first input data falls within the predetermined category, determining that the secondary application is associated with the predetermined category based on applying the category test.

Applying the category test may involve determining whether the first input data includes at least one of a plurality of patterns associated with the predetermined category.

Applying the category test may involve determining semantic information related to the first input data.

The plurality of patterns may include number patterns and applying the category test may involve determining whether the first input data includes one of the number patterns.

The plurality of patterns may include upper case word patterns and wherein applying the category test may involve determining whether the first input data includes one of the upper case word patterns.

The plurality of patterns may include unit of measurement patterns and applying the category test may involve determining whether the first input data includes one of the unit of measurement patterns.

The plurality of patterns may include currency patterns and applying the category test may involve determining whether the first input data includes one of the currency patterns.

The plurality of patterns may include phone number patterns and applying the category test may involve determining whether the first input data includes one of the phone number patterns.

The plurality of patterns may include address patterns and applying the category test may involve determining whether the first input data includes one of the address patterns.

The plurality of patterns may include email address patterns and applying the category test may involve determining whether the first input data includes one of the email address patterns.

The plurality of patterns may include recently used application names and applying the category test may involve determining whether the first input data includes one of the recently used application names.

The plurality of patterns may include recently installed application names and applying the category test may involve determining whether the first input data includes one of the recently installed application names.

The plurality of patterns may include advertisement patterns corresponding to a product and applying the category test may involve determining whether the first input data includes one of the advertisement patterns.

The plurality of patterns may include restaurant patterns and applying the category test may involve determining whether the first input data includes one of the restaurant patterns.

The plurality of patterns may include movie names and applying the category test may involve determining whether the first input data includes one of the movie names.

The plurality of patterns may include appointment patterns and applying the category test may involve determining whether the first input data includes one of the appointment patterns.

The plurality of patterns may include task list patterns and applying the category test may involve determining whether the first input data includes one of the task list patterns.

The plurality of patterns may include music patterns and applying the category test may involve determining whether the first input data includes one of the music patterns.

The method may involve receiving location information identifying a location of the personal computing device, applying the category test may involve applying a location based category test to the location information.

Applying the location based category test may involve determining whether the location information corresponds to an allowed location.

Activating the secondary application to generate the second data may involve generating the second data based on the first input data via said secondary application.

Generating the second data based on the first input data may involve detecting selection of a portion of the first data, and generating the second data based on the selected portion of the first data The method may involve displaying the second data on the display device for user selection.

Generating the second data may involve retrieving at least one contact having a plurality of contact information fields, at least one of the plurality of contact information fields corresponding to the first input data, and generating the second data to include at least one of the plurality of contact information fields.

The plurality of contact information fields may be selected from a group consisting of an email, a phone number, a name, an address, a profile picture, a company, a title, a birthday, and a spouse's name.

The first input data may include a first number and generating the second data may involve displaying the first number and at least one calculator key for selection by the user, detecting selection of at least one of the at least one calculator keys, generating a second number based on the first number and the at least one selected calculator key, and generating the second data to include the second number.

The first input data may include a formula and generating the second data may involve solving the formula and generating the second data to include a solution to the formula.

The first input data may include a first number and a first unit and generating the second data may involve generating a second number based on the first number and generating a second unit based on the first unit, and generating the second data to include at least one of the second number and the second unit.

The first unit may correspond to a first unit of measurement and the second unit may correspond to a second unit of measurement and generating the second number may involve generating the second number based on a ratio associated with the first and second units of measurements.

The first unit may correspond to a first currency and wherein the second unit may correspond to a second currency and generating the second number may involve generating the second number based on a ratio associated with the first and second currencies.

Generating the second data may involve retrieving at least one restaurant reservation having a plurality of restaurant reservation information fields, and generating the second data to include at least one of the plurality of restaurant reservation information fields.

Generating the second data may involve retrieving at least one theatre having a plurality of theatre information fields, at least one of the plurality of theatre information fields corresponding to the first input data and generating the second data to include at least one of the plurality of theatre information fields.

Generating the second data may involve retrieving at least one appointment having a plurality of appointment information fields, at least one of the plurality of appointment information fields corresponding to the first input data, and generating the second data to include at least one of the plurality of appointment information fields.

Generating the second data may involve retrieving at least one task having a plurality of task information fields, at least one of the plurality of task information fields corresponding to the first input data, and generating the second data to include at least one of the plurality of task information fields.

Generating the second data may involve retrieving at least one song having a plurality of song information fields, at least one of the plurality of song information fields corresponding to the first input data, and generating the second data to include at least one of the plurality of song information fields.

In accordance with another aspect of the invention, there is provided a method of executing an action related to data input by a user via a personal computing device. The method involves generating first input data based on user selection of a data input box, and associating the first input data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application. The method also involves monitoring for user selection of the icon, and, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

Associating the first input data with the secondary application may involve applying a category test to the first input data to determine that the first input data falls within a predetermined category, and determining that the secondary application is associated with the category based on applying the category test.

The first input data may include a context indicator and applying the category test to the first input data may involve determining that the context indicator of the first input data corresponds to a stored context indicator associated with the predetermined category.

The stored context indicator may include a username context indicator and applying the category test to the first input data may involve determining whether the context indicator corresponds to the username context indicator.

The stored context indicator may include a password context indicator and applying the category test to the first input data may involve determining whether the context indicator corresponds to the password context indicator.

The stored context indicator may include a phone number context indicator and applying the category test to the first input data may involve determining whether the context indicator corresponds to the phone number context indicator.

The stored context indicator may include an email address context indicator and applying the category test to the first input data may involve determining whether the context indicator corresponds to the email address context indicator.

The stored context indicator may include an image context indicator and applying the category test to the first input data may involve determining whether the context indicator corresponds to the image context indicator.

The stored context indicator may include a text context indicator and applying the category test to the first input data may involve determining whether the context indicator corresponds to the text context indicator.

Activating the secondary application to generate the second data may involve generating the second data based on the first input data via the secondary application.

The method may involve displaying the second data on the display device for user selection.

The first input data may include a username context indicator and generating the second data may involve reading a username from a database, and generating the second data to include the username.

The first input data may include a contact information context indicator and generating the second data may involve reading from a database at least one contact having at least one contact information field corresponding to the contact information context indicator, and generating the second data to include the at least one contact information field.

The contact information context indicator may be selected from a group consisting of an email context indicator, a phone number context indicator, a name context indicator, an address context indicator, a profile picture context indicator, a company context indicator, a job title context indicator, a birthday context indicator, and a spouse's name context indicator.

The first input data may include an image context indicator and generating the second data may involve reading from a database at least one image and generating the second data to include the at least one image.

The first input data may include a text context indicator.

The first input data may include first input text being in a first language and generating the second data may involve generating the second data to include a translation of the first input text from the first language into a second language.

The first input data may include a first word and generating the second data may involve generating the second data to include a second word having a similar meaning to the first word.

The first input data may include a first word and generating the second data may involve generating the second data to include a definition of the first word.

Generating the second data may involve searching for the second data via a network connection.

The method may involve receiving location information indicating a location of the personal computing device and searching for the second data via the network connection may involve searching for the second data via the network connection based on the location information.

The second data may include advertisement information.

Generating the second data may involve causing the second data to be sent to a social networking platform.

Generating the second data may involve reading from a database at least one secondary application identifier, and generating the second data to include the at least one secondary application identifier.

In accordance with another aspect of the invention, there is provided a method of executing an action related to data input by a user via a personal computing device. The method involves generating first input data via a word selector application and associating the first input data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application. The method also involves monitoring for user selection of the icon, and in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

Generating the first input data via the word selector application may involve causing the display device to display selectable text and a selector having a plurality of text select icons, detecting selection of one of the plurality of text select icons, and generating the first input data to include a portion of the selectable text corresponding to the selected one of the plurality of text select icons.

The plurality of text select icons may include a word select icon and when the selected one of the plurality of text select icons includes the word select icon, generating the first input data to include the portion of the selectable text may involve generating the first input data to include a word of the selectable text.

The plurality of text select icons may include a word select icon and when the selected one of the plurality of text select icons includes the word select icon, generating the first input data to include the portion of the selectable text may involve generating the first input data based on a selected position within the word select icon.

The plurality of text select icons may include a sentence select icon and when the selected one of the plurality of text select icons includes the sentence select icon, generating the first input data to include the portion of the selectable text may involve generating the first input data to include a sentence of the selectable text.

The plurality of text select icons may include a paragraph select icon and when the selected one of the plurality of text select icons includes the paragraph select icon, generating the first input data to include the portion of the selectable text may involve generating the first input data to include a paragraph of the selectable text.

The plurality of text select icons may include a select all icon and when the selected one of the plurality of text select icons includes the select all icon, generating the first input data to include the portion of the selectable text may involve generating the first input data to include all of the selectable text.

In accordance with another aspect of the invention, there is provided a method of executing an action related to data input by a user via a personal computing device. The method involves generating network connection data associated with a network in communication with the personal computing device and associating the network connection data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application. The method also involves monitoring for user selection of the icon and, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

Associating the network connection data with the secondary application may involve applying a category test to the network connection data to determine whether the network connection data falls within a predetermined category, and determining that the secondary application is associated with the predetermined category based on applying the category test.

The network connection data may include a cost indicator indicating a cost of accessing the network and applying the category test may involve determining whether the cost indicator indicates that the cost of accessing the network is less than a threshold cost.

The network connection data may include a bandwidth indicator indicating a bandwidth of the network and applying the category test may involve determining whether the bandwidth indicator indicates that the bandwidth of the network is greater than a threshold bandwidth.

In accordance with another aspect of the invention, there is provided a method of executing an action related to data input by a user via a personal computing device. The method involves receiving location information identifying a location of the personal computing device and associating the location information with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application. The method also involves monitoring for user selection of the icon and, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

Receiving the location information may involve receiving the location information via a Near Field Communication (“NFC”) receiver.

Receiving the location information may involve receiving the location information via a Global Positioning System receiver.

Receiving the location information may involve receiving the location information via a network connection and wherein the location information includes a Service Set Identifier (SSID).

Associating the network connection data with the secondary application may involve: applying a category test to the location information to determine whether the location information falls within a predetermined category, and determining that the secondary application is associated with the predetermined category based on applying the category test.

Applying the category test may involve determining whether the location information corresponds to an allowed location

In accordance with another aspect of the invention, there is provided a method of executing an action related to data input by a user via a personal computing device. The method involves receiving first input data via a keyboard and causing an icon to be displayed on a display device for selection, the icon associated with a secondary application. The method also involves monitoring for user selection of the icon and, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

Activating the secondary application to generate the second data may involve generating the second data based on the first input data via the secondary application.

The method may involve displaying the second data on the display device for user selection.

The first input data may include first input text being in a first language and generating the second data may involve generating the second data to include a translation of the first input text from the first language into a second language.

The first input data may include a first word and wherein generating the second data may involve generating the second data to include a second word having a similar meaning to the first word.

The first input data may include a first word and generating the second data may involve generating the second data to include a definition of the first word.

Generating the second data may involve searching for the second data via a network connection.

The method may involve receiving location information indicating a location of the personal computing device and searching for the second data via the network connection may involve searching for the second data via the network connection based on the location information.

The second data may include advertisement information.

Generating the second data may involve causing the second data to be sent to a social networking platform.

Generating the second data may involve reading from a database at least one secondary application identifier and generating the second data to include the at least one secondary application identifier.

In accordance with another aspect of the invention, there is provided a computer readable medium having stored thereon codes for directing a processor to execute any of the above methods.

In accordance with another aspect of the invention, there is provided an apparatus for executing an action related to data input by a user via a personal computing device. The apparatus includes a processor operably configured to execute any of the above methods.

In accordance with another aspect of the invention, there is provided a system for executing an action related to data input by a user via a personal computing device. The system includes provisions for receiving first input data via a keyboard, provisions for associating the first input data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application, provisions for monitoring for user selection of the icon, and provisions for, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

In accordance with another aspect of the invention, there is provided a system for executing an action related to data input by a user via a personal computing device. The system includes provisions for generating first input data based on user selection of a data input box, provisions for associating the first input data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application, provisions for monitoring for user selection of the icon, and provisions for, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

In accordance with another aspect of the invention, there is provided a system for executing an action related to data input by a user via a personal computing device. The system includes provisions for generating first input data via a word selector application, provisions for associating the first input data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application, provisions for monitoring for user selection of the icon, and provisions for, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

In accordance with another aspect of the invention, there is provided a system for executing an action related to data input by a user via a personal computing device. The system includes provisions for generating network connection data associated with a network in communication with the personal computing device, provisions for associating the network connection data with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application, provisions for monitoring for user selection of the icon, provisions for, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

In accordance with another aspect of the invention, there is provided a system for executing an action related to data input by a user via a personal computing device. The system includes provisions for receiving location information identifying a location of the personal computing device, provisions for associating the location information with a secondary application available to the user via the personal computing device by causing an icon to be displayed on a display device for selection, the icon associated with the secondary application, provisions for monitoring for user selection of the icon, provisions for, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

In accordance with another aspect of the invention, there is provided a system for executing an action related to data input by a user via a personal computing device. The system includes provisions for receiving first input data via a keyboard, provisions for causing an icon to be displayed on a display device for selection, the icon associated with a secondary application, provisions for monitoring for user selection of the icon, provisions for, in response to detecting user selection of the icon, activating the secondary application to generate second data contextually associated with the secondary application for display on the display device.

In accordance with an embodiment, a computer-implemented method includes displaying a first user interface associated with a primary application on a display of a computing device; receiving, via the primary application, first input data associated with the first user interface; displaying one or more identifiers on the display based on the first input data, each identifier being associated with one secondary application of a plurality of different secondary applications available to the computing device, each different secondary application being operable to perform a function different from the primary application; selecting, in response to a user input associated with one identifier of the one or more identifiers, a select secondary application from amongst the plurality of different secondary applications; causing the select secondary application to assume control of at least a portion of the display; displaying a second user interface associated with the select secondary application on the display; receiving, via the select secondary application, second input data associated with the second user interface; performing, via the select secondary application, at least one operation based on the first input data and the second input data, to produce output data; displaying the output data on the display; and returning control of the at least a portion of the display to the primary application.

In an embodiment, the method also includes receiving, via the primary application, the first input data in response to a first input action; and receiving, via the select secondary application, the second input data in response to a second input action. The first input action may be different from the second input action.

In another embodiment, the method also includes receiving, via the primary application, location data for the computing device; and displaying the one or more identifiers based on the first input data and the location data.

In another embodiment, the one or more identifiers comprise one or more icons.

In another embodiment, receiving the second input data includes retrieving, via the select secondary application, additional data from memory of the computing device; displaying the additional data on the display; and receiving, via the select secondary application, the second input data as a user selection based on the additional data. The additional data may comprise a data set having a plurality of information fields; the user selection may be associated with at least one information field of the plurality of information fields; and retrieving the additional data may include retrieving, via the select secondary application, the data set based on the first input data and the select at least one information field. The additional data may include at least one of: a contact having a plurality of contact information fields; a reservation having a plurality of reservation information fields; a theatre having a plurality of theatre information fields; an appointment having a plurality of appointment information fields; a task having a plurality of task information fields; and a song having a plurality of song information fields.

In another embodiment, the primary application comprises a keyboard program; the first user interface comprises an interface for the keyboard program; and the one or more identifiers are displayed adjacent or near the interface for the keyboard program.

In another embodiment, each secondary application of the plurality of different secondary applications is configured to perform a different function.

In another embodiment, the first input data comprises a first number relative to a first measurement unit; and performing the at least one operation includes converting, via the select secondary application, the first number relative to the first measurement unit into a second number relative to a second measurement unit.

In another embodiment, the method also includes monitoring, via the primary application, the first input data to identify one or more associations with the plurality of different secondary applications; and generating, via the primary application, the one or more identifiers based on the one or more associations.

In another embodiment, the method also includes determining, via the primary application, whether the first input data comprises at least one pattern of a plurality of patterns associated with a predetermined category; and selecting, if the first input data comprises the at least one of a plurality of patterns associated with the predetermined category, the one or more identifiers for display on the display based on the predetermined category.

In yet another embodiment, causing the select secondary application to assume control includes monitoring for a user input action associated with the select secondary application; and activating, via the primary application, in response to detecting the user input action, the select secondary application.

In accordance with another embodiment, a computer-implemented method includes displaying a first user interface associated with a primary application on a display of a computing device; receiving, via the primary application, first input data associated with the first user interface; determining whether the first input data comprises at least one pattern of a plurality of patterns associated with a predetermined category; displaying, if the first input data comprises the at least one pattern, one or more identifiers on the display, each identifier being associated with one secondary application of a plurality of different secondary applications, each different secondary application being operable to perform a function different from the primary application; activating, in response to a user input associated with one identifier of the one or more identifiers, a select secondary application from amongst the plurality of different secondary applications; causing the select secondary application to assume control of at least a portion of the display; displaying a second user interface associated with the select secondary application on the display; receiving, via the select secondary application, second input data associated with the second user interface; performing, via the select secondary application, at least one operation based on the first input data and the second input data, to produce output data; and displaying the output data on the display.

In an embodiment, the method also includes returning control of the at least a portion of the display to the primary application.

In another embodiment, the method also includes receiving, via the select secondary application, third input data; and performing, via the select secondary application, one output function of a plurality of output functions in response to the third input data, each output function being contextually associated with the select secondary application.

In accordance with yet another embodiment, a computer-implemented method includes displaying a first interface for a keyboard program on a display of a computing device; receiving, via the keyboard program, input data associated with a primary application that the keyboard program is in communication with; detecting, via the keyboard program, a user input action associated with activating a secondary application, the secondary application configured to perform a function different from the primary application; initiating, via the keyboard program, in response to detecting the user input action, activation of the secondary application to search for results associated with the input data; obtaining output data via the secondary application, the output data being produced based on the search for results associated with the input data initiated by the secondary application; and displaying the output data on the display in an interface used by the primary application.

In an embodiment, detecting the user input action includes displaying an identifier on the display based on the input data; and monitoring for user selection of the identifier. Displaying the identifier may include determining whether the input data comprises at least one pattern of a plurality of patterns associated with a predetermined category; and displaying the identifier on the display if the input data comprises the at least one pattern.

In another embodiment, the method also includes displaying a second interface associated with the secondary application on the display, and displaying the output data in the second interface.

Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

In drawings which illustrate embodiments of the invention,

FIG. 1 is a block diagram of a personal computing device for executing an action related to data input by a user in accordance with one embodiment of the invention;

FIG. 2 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 1 to perform keyboard application manager functions in accordance with one embodiment of the invention;

FIG. 3 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 1 to perform keyboard program functions in accordance with one embodiment of the invention;

FIG. 4 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 5 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 1 to perform keyboard application manager functions in accordance with one embodiment of the invention;

FIG. 6 is a depiction of a Contact Manager application data structure stored in the memory of the personal computing device shown in FIG. 1, in accordance with one embodiment of the invention;

FIG. 7 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 8 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 9 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 10 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 11 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 1 to effect Contact Manager application functions in accordance with one embodiment of the invention;

FIG. 12 is a depiction of a contact stored in memory of the personal computing device shown in FIG. 1 in accordance with one embodiment of the invention;

FIG. 13 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 14 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 15 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 16 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 17 is a front view of the personal computing device shown in FIG. 1 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 18 is a block diagram of the personal computing device shown in FIG. 1 in accordance with another embodiment of the invention;

FIG. 19 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 20 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Measurement Conversion application functions in accordance with one embodiment of the invention;

FIG. 21 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 22 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 23 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 24 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 25 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 26 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Currency application functions in accordance with one embodiment of the invention;

FIG. 27 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 28 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Calculator application functions in accordance with one embodiment of the invention;

FIG. 29 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 30 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 31 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 32 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Calendar application functions in accordance with one embodiment of the invention;

FIG. 33 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 34 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Task List application functions in accordance with one embodiment of the invention;

FIG. 35 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 36 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Music List application functions in accordance with one embodiment of the invention;

FIG. 37 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 38 is a depiction of a block of code for directing the personal computing device shown in FIG. 18 to effect Advertisement application functions in accordance with one embodiment of the invention;

FIG. 39 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 40 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Search application functions in accordance with one embodiment of the invention;

FIG. 41 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 42 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Location Related application functions in accordance with one embodiment of the invention;

FIG. 43 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 44 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 45 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Application Suggestion application functions in accordance with one embodiment of the invention;

FIG. 46 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to perform context generating functions in accordance with one embodiment of the invention;

FIG. 47 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 48 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 49 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Login Management application functions in accordance with one embodiment of the invention;

FIG. 50 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 51 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 52 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 53 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 54 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Image Management application functions in accordance with one embodiment of the invention;

FIG. 55 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 56 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 57 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Translator application functions in accordance with one embodiment of the invention;

FIG. 58 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 59 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Thesaurus application functions in accordance with one embodiment of the invention;

FIG. 60 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 61 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Dictionary application functions in accordance with one embodiment of the invention;

FIG. 62 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 63 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Social Networking application functions in accordance with one embodiment of the invention;

FIG. 64 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to display more than one secondary application icon in accordance with one embodiment of the invention;

FIG. 65 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 66 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect a process for displaying secondary applications grouped together in accordance with one embodiment of the invention;

FIG. 67 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 68 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 69 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect multi-select application functions in accordance one embodiment of the invention;

FIG. 70 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect multi-select widget functions in accordance with embodiments of the invention;

FIG. 71 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 72 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 73 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Employee Management application functions in accordance with one embodiment of the invention;

FIG. 74 is a block diagram of a system for executing an action related to data input including the personal computing device generally as shown in FIG. 18 in accordance with one embodiment;

FIG. 75 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 76 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Restaurant reservation application functions in accordance with one embodiment of the invention;

FIG. 77 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 78 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 79 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 80 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect Theatre Listing application functions in accordance with one embodiment of the invention;

FIG. 81 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 82 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 83 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 84 is a flowchart depicting blocks of code for directing the personal computing device shown in FIG. 18 to effect keyboard application manager functions in accordance with one embodiment of the invention;

FIG. 85 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention;

FIG. 86 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention; and

FIG. 87 is a front view of the personal computing device shown in FIG. 18 including a display showing a screenshot in accordance with one embodiment of the invention.

DETAILED DESCRIPTION

Generally, there is provided a method, system and apparatus for executing an action on a computing device related to input received from a user in connection with another action. In various embodiments, an input application manager (or keyboard application manager) identifies one or more secondary applications associated with the input data being entered by a user via a data entry system such as a keyboard, keypad, voice recognition-based entry system or other form of user input entry system. Icons or other visual cues associated with the secondary applications are displayed on a display for user selection. In various embodiments, upon user selection the corresponding secondary application associated with a selected icon is activated to provide enhanced functionality to the user.

In various embodiments, in the context of a keyboard-based approach, there is provided a personal computing device (or other computing device) running a keyboard program and a keyboard application manager. In various embodiments, the keyboard application manager may be included as part of the keyboard program. The keyboard program displays a virtual or digital keyboard on a display of the personal computing device and receives input data from the user in the form of user keystrokes or other recognizable user input. In various embodiments, the keyboard program and/or the keyboard application manager monitors the input data and performs a multitude of actions, such as, for example, any or all of the following:

-   -   (a) attempting to predict the next letters, words and phrases;     -   (b) attempting to “correct” using fuzzy logic what the user         meant to type assuming they are typing incorrectly;     -   (c) learning what the user is typing if it is not something         which is already understood;     -   (d) attempting to determine patterns and then categories         associated with what the user is entering;     -   (e) monitoring a context in which the user is entering         information (email context, password context, or context         information indicating what application is currently being         executed for example).

In various embodiments, the personal computing device may also run one or more device applications, such as, for example, a text entry application along with the keyboard program and the keyboard application manager. Some exemplary device applications which may, in various cases, act as text entry applications are various versions of web browser applications, Instant Messaging (“IM”) applications, Short Message Service (“SMS”) applications, social media applications, word processor applications, or note taking applications. In various embodiments, other versions of these text entry applications may also be implemented as secondary applications. In various embodiments, the personal computing device may also or alternatively run one or more device applications, such as, for example, a voice recognition application along with the keyboard program and the keyboard application manager.

In this specification, it will be understood that device applications are generally applications that may be run on the personal computing device independent of the keyboard application manager. Device applications encompass a wide range of third party applications that may run on the personal computing device and will vary depending on the operating system and the personal computing device involved. Examples of device applications include word processors, email applications, contact managers, calendars, audio/video players, photo workshop applications, social networking applications, and browsers, amongst many others.

In general, device applications are separate applications from secondary applications. A secondary application is an application that can be registered in association with at least one category managed by the keyboard application manager. A secondary application is generally adapted or configured to cooperate with the keyboard application manager, as illustrated in various embodiments set out in this specification. In various embodiments a secondary application provides functionality related to a device application and the secondary application may serve as an interface or gateway to a more function-rich device application.

In various embodiments, a device application may be invoked or activated by a secondary application in response to the secondary application being invoked or activated by the keyboard application manager. In other alternative arrangements, a device application may be invoked directly by the keyboard application manager where, for example, the device application is registered in association with at least one category managed by the keyboard application manager and configured to respond to instructions from the keyboard application manager.

In various embodiments, the keyboard application manager runs concurrently with the keyboard program, reads the input data received from the user via the keyboard program, and monitors the input data for various patterns associated with various predetermined categories. When a pattern is found in the input data, the keyboard application manager determines which category the input data falls within, based on the pattern found. In various embodiments, these patterns may include, by way of example only, patterns for identifying proper nouns, phone numbers, email addresses, addresses, units of measurement, or currency patterns for example.

Once the keyboard application manager has identified a category that the input data falls within, the keyboard application manager identifies one or more secondary applications associated with the category. The keyboard application manager then associates the input data with each applicable secondary application by causing icons associated with such secondary applications to be displayed on the display for selection by the user.

The keyboard application manager monitors for user selection of one of the icons, and once user selection of an icon is detected, the keyboard application manager activates the secondary application to generate second data for display. In various embodiments, when the keyboard application manager activates the secondary application, the keyboard application manager hands control of the personal computing device (or computing device) off to the secondary application, and the secondary application causes the personal computing device to display a user interface associated with the secondary application. In various embodiments, the secondary application may display the user interface within a portion of the display previously displaying a user interface associated with the keyboard program and the keyboard application manager. In various embodiments, the secondary application may display the user interface above, below, overlaying or in concert with the user interface displayed by the keyboard program and keyboard application manager.

Secondary applications provide enhanced functionality, over and above the functionality of the keyboard program, to a user with respect to a wide range of different roles to which those secondary applications may be programmed. In various embodiments, secondary applications are adapted and/or configured to cooperate with the keyboard application manager to provide such enhanced functionality. Secondary applications may be referred to as keyboard applications, apps, applets, mini-apps, micro-apps, internal applications, or interapps for example. Some examples of secondary applications are: contact managers, login information managers, interfaces to reservation systems, measurement converters, currency converters, calculators, enterprise tools, database lookups, web searches, or translators.

In various embodiments, a secondary application may generate data contextually associated with, or related to, the secondary application. For example, a contact manager application may generate data contextually associated with contact management. In various embodiments, secondary applications may generate data based on the input data received via the keyboard. The secondary applications may receive the input data from the keyboard application manager or may access the input data directly from memory. Thus, when a secondary application is invoked the secondary application can be presented to the user “preloaded” with additional information retrieved or generated based on the input data already received from the user or context. In this way, secondary applications appear to the user to predict what information the user is going to be looking for. As a result, in various embodiments, secondary applications launched via the keyboard application manager are able to save the user time in accessing or generating additional data related to the input data received via the keyboard. In various embodiments, the additional data is contextually relevant to the activity that the user is carrying out with the keyboard immediately prior to invoking the applicable secondary application.

In various embodiments, the additional data retrieved or generated in a secondary application relates to information that the user entered via the keyboard and is information the user wants to quickly retrieve without having to exit the device application they are currently executing to search for it in a separate application. For example, the additional data in various embodiments represents the contact information of a third party that is readily retrieved by the secondary application that was invoked and activated via the keyboard application manager. In another example, the additional data in various embodiments represents measurement conversion information that is generated by the secondary application based on a first measurement provided in the input data, the secondary application having been invoked and activated via the keyboard application manager. In a further example, the additional data in various embodiments represents login or password information that is readily retrieved by the secondary application again invoked and activated via the keyboard application manager.

Further, in various embodiments only secondary applications which are associated with categories within which the input data falls are accessible by the user through the selection of relevant icons. Accordingly, in various embodiments, only secondary applications which may be relevant to the input data are accessible to the user via the keyboard application manager. Thus, in various embodiments, by using the keyboard application manager via a personal computing device a user is able to quickly invoke or activate the most relevant secondary applications to that user at the time, more quickly and easily than if all of the secondary applications available on the personal computing device were accessible to the user for manual selection.

In various embodiments, the user may be entering text into a text entry application having data input boxes or forms. When the user selects one of the data input boxes, the keyboard application manager (or input application manager) or the text entry application may generate context information based on a context associated with the selected data input box. The context information acts as input data and the keyboard application manager then determines which, if any, category the input data including the generated context information falls within. In various embodiments, the context information may include, by way of example only, username context information, password context information or contact information context information such as email context information, phone number context information, name context information, address context information, profile picture context information, company context information, title context information, or birthday context information, for example.

Some examples of secondary applications which may be associated with context based categories are: form based applications, contact managers, login information managers (e.g. password vaults), image entry applications, or enterprise tools.

In various embodiments, the keyboard application manager or a network analysis application may generate network connection information based on a network connection currently available to the user. The network connection information acts as input data and the keyboard application manager then determines which, if any, category the network connection falls within. In various embodiments, the network connection information may include, by way of example only, wireless connection information, such as Wifi™ connection information or mobile phone network connection information, Bluetooth connection information, network bandwidth information, or network identification (ID) information, for example.

Some examples of secondary applications which may be associated with network connection based categories are: heavy bandwidth use applications or applications dedicated to use when connected to a certain network, such as, for example, enterprise tools.

In various embodiments, the keyboard application manager or a location application may generate location information based on a location of the user. The location information acts as input data and the keyboard application manager then determines which, if any, category the location information falls within. In various embodiments, the location information may include, by way of example only, network location information, GPS based location information, or NFC location information, for example.

Some examples of secondary applications which may be associated with location based categories are: heavy bandwidth use applications, or applications dedicated to use when the user is a in a certain location, such as, for example, enterprise tools.

In various embodiments, some icons associated with some secondary applications may be persistent and thus always displayed by the keyboard application manager. Some examples of secondary applications which may be persistent are: searching, advertising, translation, dictionary, or thesaurus applications, for example.

Personal Computing Device Referring to FIG. 1, a personal computing device for executing an action related to data input by a user according to one embodiment is shown generally at 10. In the embodiments described below with reference to FIGS. 1-80, the personal computing device 10 is a smart phone. In various embodiments, however, the personal computing device 10 may be any of a variety of computing devices including a personal computer, a laptop, a tablet, an e-book, a web book, a watch, a Macbook™, a Chromebook™, a web-enabled wall or table, a gaming system, glasses, glass technology, an internet set top box, a personal video recorder (“PVR”), or a television, for example.

The personal computing device 10 includes a processor 12, a program memory 14, a variable memory 16, an input/output (I/O) interface 18, and a touch sensitive display or display device 20.

In the embodiment shown in FIG. 1, the program memory 14 and the variable memory 16 are included as part of the personal computing device 10. In various embodiments, the program memory 14, the variable memory 16, or both may be separate from the personal computing device 10 and may be in communication with the processor 12 through the I/O interface 18, for example, or through one or more networks 27, such as the Internet or an intranet, connected to, or in communication over the I/O interface 18. In various embodiments the I/O interface 18 enables a wireless connection such as, for example, a mobile network connection or a Wi-Fi™ connection to the one or more networks 27. In other embodiments, the I/O interface 18 may enable a wired connection to the one or more networks 27.

In various embodiments, program codes for directing the processor 12 to carry out various functions are stored in the program memory 14, which may be implemented as a read only memory (ROM), random access memory (RAM), a hard disk drive (HDD), a network drive, flash memory, any other form of computer-readable memory or storage medium, and/or a combination thereof.

In the first embodiment, the program memory 14 includes a block of codes 30 for directing the personal computing device 10 to effect keyboard program functions, a block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions, a block of codes 34 for directing the personal computing device 10 to effect secondary application functions, and a block of codes 36 for directing the personal computing device 10 to effect device application functions.

The variable memory 16 includes a plurality of storage locations including location 38 for storing keyboard input data, location 39 for storing clipboard data, location 44 for storing secondary application data structures, location 46 for storing pin state information, and location 49 for storing contact information. In various embodiments, the plurality of storage locations may be stored in a database in the variable memory 16.

The variable memory 16 is implemented as RAM in the embodiment shown.

However, in various embodiments, the variable memory 16 may be substituted with a hard drive, a network drive, flash memory, a memory stick or card, any other form of computer-readable storage medium or a combination thereof.

Overview of the Keyboard Application Manager

As discussed above, in various embodiments, the keyboard application manager (as defined in the block of codes 32, for example) runs concurrently with the keyboard program, reads the input data received from the user and monitors the input data to determine whether the input data falls within various predetermined categories. In various embodiments, this may involve determining whether a pattern is found in the input data, and determining which category the input data falls within, based on the pattern found. Once the keyboard application manager has identified a category (an identified category) that the input data falls within, the keyboard application manager identifies at least one secondary application associated with that category and associates the input data with the secondary application by causing an icon associated with the secondary application to be displayed on the display 20 for selection by the user. In general, the icon serves as a visual representation or cue to the user that there are one or more secondary applications associated with the identified category that the user may activate for further processing using or based on the input data. The keyboard application manager then monitors for user selection of the icon, and once user selection of the icon is detected, the keyboard application manager activates the secondary application to retrieve or generate secondary data for display on the display.

In this specification, it may be stated that certain encoded entities such as applications perform certain functions. For example, a secondary application may be described as storing data in the variable memory 16. Whenever an application is described as taking an action, it will be understood that a processor (e.g. the processor 12) is directed to take the action by code defining the application.

Referring to FIG. 2, a flowchart is shown generally at 120 for directing the personal computing device 10 shown in FIG. 1 to perform keyboard application manager functions in accordance with one embodiment. Referring to FIGS. 1 and 2, the flowchart 120 may be encoded in the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. Thus, in various embodiments, the flowchart 120 depicts a process effected by the keyboard application manager. In various embodiments, where blocks of code are indicated herein as different from one another, the steps described herein as executed by different blocks of code may be carried out in one or more common blocks of code, provided the steps are followed as disclosed herein.

The flowchart 120 begins with block 122 which directs the keyboard application manager to receive first input data via a keyboard. The first input data may be stored in the location 38 of the variable memory 16, for example. In some variations, for example, the first input data may include input text.

Block 123 directs the keyboard application manager to associate the first input data with a secondary application available to the user via the personal computing device 10. In various embodiments, block 123 directs the keyboard application manager to cause an icon to be displayed on the display 20 for selection by the user, the icon being associated with a secondary application. The icon may be stored in memory in association with a secondary application and the keyboard application manager may cause the icon to be displayed by reading the icon from the memory. In some variations, for example, the icon may be stored in memory (e.g. in the location 44 of the variable memory 16), as part of a secondary application data structure.

Block 128 directs the keyboard application manager to monitor for user selection of the icon. The keyboard application manager may be directed to detect user selection of the icon through conventional mechanisms for touch sensitive displays such as by detecting contact on the display 20. In other embodiments, any other mechanism known to one of ordinary skill in the art may be employed to detect selection of the icon. For example, whether or not a touch sensitive display may be employed, a pointing device such as a pointer controlled by a mouse may be used to select the icon. Alternatively, an icon may be selected by a voice activation or recognition-based command or another form of input-based selection. In various other embodiments, an external (physical or digital/virtual) keyboard or other input device such as a button on a device such as a watch or a remote control may be used to select the icon.

Block 130 directs the keyboard application manager to, in response to detecting user selection of the icon, activate the secondary application associated with the selected icon to generate second data contextually associated with the secondary application for display on the display 20. In various embodiments, activating the secondary application may involve handing control of the personal computing device 10 over to the secondary application. Handing control of the personal computing device 10 over to the secondary application may involve allowing the secondary application to control the display 20. In various embodiments, the secondary application may have control over a portion of the display previously controlled by the keyboard program and the keyboard application manager. The second data may be generated based on the first input data and the second data may relate to the secondary application associated with the selected icon.

Contact Manager Overview

Referring to FIG. 1, in various embodiments, the personal computing device 10 provides the user with a Contact Manager application for use via the display 20 and a virtual (digital) keyboard. Here, the Contact Manager application is a secondary application adapted to cooperate with and be activated by the keyboard application manager. When an icon associated with the Contact Manager application is selected, the Contact Manager application provides the user with immediate access to contact information stored in memory (e.g. in the location 49). In various embodiments, the contact information may be stored in an external database accessible by the personal computing device via the one or more networks 27 for example. In various embodiments, the Contact Manager application uses the input data received from the user via the keyboard or a portion thereof to display contact information related to the input data. In various embodiments, the Contact Manager may use the input data to look up a contact having contact information fields that correspond to a portion of the input data, and display the contact on the display 20 for user selection.

Keyboard Program

Referring to FIG. 3, a flowchart for directing the personal computing device 10 shown in FIG. 1 to perform keyboard program functions to generate input data in accordance with one embodiment is shown generally at 100. The flowchart 100 may be encoded in the block of codes 30 for directing the personal computing device 10 to effect keyboard program functions. The flowchart 100 may thus depict a process effected by the keyboard program. In various embodiments, the block of codes 30 or a portion thereof may be included in blocks of codes defining an operating system (“OS”) running on the personal computing device 10. In various embodiments the OS may be any form of operating system supporting the operation of software on the personal computing device. By way of example only, the OS may be Android™, iOS™, Windows™ Phone OS, Blackberry™ OS, Blackberry™ Tablet OS, Symbian™, webOS™, Windows™ 8 (or another version thereof), Mac™ OS, Mac™ OS X, Linux, UNIX, Firefox™ OS, or a variation of any of the foregoing operating systems. In various embodiments, execution of the flowchart 100 may be invoked by the block 122 of the flowchart 120 shown in FIG. 2.

In various embodiments, the OS causes a currently selected input method to be displayed on the display 20 in response to a request from a currently running device application. Where the device application is a text entry application and the device application has requested a keyboard, the OS may activate or invoke the keyboard program by invoking the flowchart 100.

The flowchart 100 begins with block 102 which directs the keyboard program to cause the display 20 to display a virtual or digital version of a keyboard 104 as shown in FIG. 4. FIG. 4 is a front view of the personal computing device 10 including the display 20 showing a screenshot according to one embodiment. In the embodiment shown in FIG. 4, the keyboard 104 is a standard QWERTY keyboard, however it will be understood that in other embodiments, the keyboard 104 may be any type of keyboard or keypad configured to serve as an input device for users, such as, for example, any keyboard adapted for user input of symbolic or alphanumeric characters or entries.

In the embodiment shown in FIG. 4, the keyboard 104 is displayed in conjunction with a portion 106 of the display 20 displayed or controlled by the device application. In the embodiment shown in FIG. 4, the device application is a text messaging application acting as a text entry application. However in various embodiments, various different device applications which allow for data input may be used in place of the text messaging application shown in FIG. 4. In some variations, for example, the device application may be a version of a web browser application, IM application, SMS application, social media application, word processor application, or note taking application. In the embodiment shown, the keyboard 104 is displayed on the display 20 at the bottom of the screen in portrait mode. However in various embodiments, the keyboard 104 may also be displayed in landscape mode.

Referring back to FIG. 3, block 108 directs the keyboard program to cause the keyboard 104 to detect input data by detecting keystrokes, received from a user, on the keyboard 104 and interpreting the keystrokes as the input data. In various embodiments, a tap on the screen acts as a keystroke and provides a set of x, y coordinates which are translated by the keyboard program into a position on the keyboard 104 and also a key. The taps can be “immediate” where the there is a touch and then a quick release or they can “linger” where the user holds down or holds down and slides or flicks causing a movement on the screen. These movements can be interpreted in many different ways.

In various embodiments, block 108 directs the keyboard program to store the input data in memory. In the example shown in FIG. 4, the input data includes input text, “Hi, please contact Mark”, and block 108 is directed to store the input text in memory (e.g. in the location 38 of the variable memory 16). In various embodiments, input data stored in the location 38 is accessible to the device application and is recognized by the device application as data received via the keyboard program. In the embodiment shown in FIG. 4, the input data stored in the location 38 is accessed and displayed in the portion 106 of the display 20 by the device application. In various embodiments, the input data may be sent by the keyboard program to the device application to be stored in memory.

In various embodiments, if the keyboard program detects a tap or a “long-press” or a “gesturing move” the keyboard program may interpret the tap or “long-press” or “gesturing move” and store or send text information to the device application.

In various embodiments, the keyboard program acts as a primary application and the detection of keystrokes received from the user on the keyboard 104 acts as a primary input action.

One of ordinary skill in the art would understand the general function of keyboards using touch sensitive displays or otherwise, and recognize that the above described keyboard functions may be implemented using various known keyboards. In various embodiments, where a keyboard having dedicated physical keys is used, the keyboard functions may not include the block 102 directing the keyboard program to cause the display 20 to display the keyboard layout since this would be unnecessary with a physical keyboard. In other embodiments, the keyboard may be separate from the personal computing device 10 and may be in communication with the personal computing device via an I/O interface such as, for example, the I/O interface 18 or another I/O interface not shown.

Category Test

In various embodiments, after the flowchart 100 concludes or concurrently with the execution of the flowchart 100, the keyboard application manager is directed to effect or execute a flowchart 200 shown in FIG. 5.

In various embodiments the flowchart 200 directs the keyboard application manager to monitor the first input data to determine if the first input data is associated with a predetermined category. In various embodiments, the monitoring of the first input data occurs in the background while the user generates the first input data as part of a primary input action. In various embodiments, the flowchart 200 directs the keyboard application manager to apply a category test to the input data to determine whether the input data falls within the predetermined category. If the keyboard application manager determines that the input data falls within the predetermined category, the keyboard application manager reads an icon from the memory, the icon being stored in association with the predetermined category, and displays the icon, or causes the icon to be displayed, on the display 20 for selection by the user. In various embodiments, the flowchart 200 then directs the keyboard application manager to detect selection of the displayed icon, and upon detecting selection of the displayed icon, the keyboard application manager activates or invokes a secondary application associated with the selected icon.

The flowchart 200 may be encoded in the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. Accordingly, it can be said that the flowchart 200 depicts a process that is effected by the keyboard application manager. In other embodiments, the flowchart 200 may be encoded in the block of codes 30 for directing the computing device 10 to effect keyboard program functions.

The flowchart 200 begins at block 202 which directs the keyboard application manager to read the input data from memory (e.g. in the location 38 of the variable memory 16) and determine whether the input data falls within a category. In some embodiments, the input data may be sent by the keyboard program to the keyboard application manager such that the keyboard application manager can determine whether the input data falls within a category. In various embodiments, block 202 directs the keyboard application manager to monitor the first input data to determine if the input data is associated with a predetermined category corresponding to a secondary application. In various embodiments, block 202 directs the keyboard application to apply a category test to the input data to determine whether the input data falls within a predetermined category. As will be described in greater detail below, in various embodiments there may be provided a plurality of different category tests which may be applied to the input data in block 202.

In certain embodiments, block 202 directs the keyboard application manager to read the input data from memory (e.g. the location 38 of the variable memory 16), and apply a Proper Noun Category test to determine whether the input data includes a word beginning with an upper case character and thus falls within a Proper Noun Category. In such embodiments, any text having a space character followed by an upper case character may act as a Proper Noun pattern.

In various embodiments, block 202 may direct the keyboard application manager to apply a category test to a threshold number of the most recently entered words of the input data stored in the variable memory. The threshold number may be 1, 2, 3, or 4, or more. In various embodiments, the threshold number is 3 such that block 202 directs the keyboard application manager to apply the category test to only the last 3 words of text generated by the keyboard 104 and stored in the variable memory 16. However in other embodiments, block 202 may direct the keyboard application manager to apply the category test to the entirety of the input data stored in memory (e.g. in the location 38 of the variable memory 16).

In the example shown in connection with FIG. 4, where the input data includes the input text, “Hi, please contact Mark”, received from the user via the keyboard program, the input data includes a space character followed by an upper case character, “M”. Referring to FIG. 5, in such an embodiment, the keyboard application manager determines at block 202 that the input data includes a word beginning with an upper case character and thus falls within the Proper Noun Category.

If the input data falls within the category, as determined by applying the category test, block 204 then directs the keyboard application manager to read from memory an icon stored in association with the category and display the icon on the display 20. In various embodiments, where there are a plurality of icons stored in association with the category, block 204 may direct the keyboard application manager to read and display each of the plurality of icons.

In various embodiments, block 204 directs the keyboard application manager to, if the input data falls within the Proper Noun category, read from the memory (e.g. from the location 44) an icon stored in association with a Proper Noun category identifier and display the icon on the display. FIG. 6 shows an exemplary Contact Manager application data structure 240 stored in the memory. The Contact Manager application data structure 240 includes an identifier 242, an icon 244, and a plurality of category identifiers 246, 248, 250, 252, 254, 256, 258, 260, and 262 stored in association with the identifier 242 and the icon 244, and thus stored in association with the categories corresponding to the category identifiers. In various embodiments, there may be a plurality of secondary application data structures similar to the Contact Manager application data structure 240 stored in the memory. Indeed, in various embodiments, there is a secondary application data structure stored for each secondary application installed on the personal computing device 10. In this embodiment, the icon 244 is a contact manager icon and is stored in association with the Proper Noun Category identifier 246 and thus the icon 244 is stored in association with the Proper Noun category. Accordingly, in this embodiment, block 204 directs the keyboard application manager to read the icon 244 from the variable memory 16 and display the icon 244 on the display 20, as shown in FIG. 4.

For the embodiment shown in FIG. 4, block 204 of FIG. 5 directs the keyboard application manager to display the icon 244 on the display 20 below the keyboard 104 in a status notification bar 126 (or other form of notification region) displayed within a user interface displayed to the user. The notification bar or region serves as a portion of the user interface in which icons or visual notifications can be presented visually informing a user of the availability of one or more secondary applications that can make use of the input data generated by the user to perform a secondary task for the user. However, in various embodiments icons associated with secondary applications such as the icon 244 may be displayed in various locations on the display 20 including above the keyboard 104, as shown in FIG. 7, to either side of the keyboard 104 as shown in FIGS. 8 and 9, within the keyboard 104 as shown in FIG. 10, or elsewhere. In various embodiments, icons associated with secondary applications may be selectively hideable (i.e. out of view or not displayed) at the option of the user. In such embodiments, the user may slide a pointer, such as the user's finger for example, in from a side of the display 20 to cause the icons to be displayed at that side and may select and drag the icons to the side of the display 20 to hide the icons.

Referring back to FIG. 5, block 206 then directs the keyboard application manager to detect selection of the displayed icon. In various embodiments, block 206 directs the keyboard application manager to, in response to detecting selection of the icon, activate or invoke a secondary application associated with the selected icon to generate second data contextually associated with the secondary application for display on the display 20. In the embodiment shown in FIG. 4, where the icon 244 of the Contact Manager application data structure 240 is displayed on the display 20 and the icon 244 is selected by the user, block 206 directs the keyboard application manager to detect user selection of the icon 244.

In various embodiments, where there are a plurality of categories installed on the personal computing device 10, blocks 202 and 204 may be invoked and re-executed for each category.

Generating Second Data Based on First Input Data

If, at block 206, as shown in FIG. 5, the keyboard application manager detects selection of the displayed icon, the keyboard application manager activates or invokes a secondary application associated with the selected icon, to generate second data contextually associated with the secondary application for display on the display 20. In various embodiments, second data may be based on the input data and the secondary application may store the second data in the variable memory 16. In various embodiments, any data generated by the secondary application may act as second data. In various embodiments, the secondary application is activated to support a secondary input action different from the detection of keystrokes received from the user on the keyboard 104 which acts as the primary input action.

In various embodiments, activating any of the secondary applications described herein may involve handing control of the personal computing device 10 over to the secondary application which may involve providing the secondary application with control over the portion of the display 20, formerly controlled by the keyboard application manager and the keyboard program. In such embodiments, the keyboard application manager and the keyboard program may be suspended when the secondary application is invoked.

In various embodiments, the secondary application may have access to the input data, which in various embodiments may be received from the user via the keyboard program and stored in memory (e.g. in the location 38 of the variable memory 16).

In various embodiments, the keyboard application manager, upon activating any of the secondary applications described herein, may send the input data, or a portion thereof to the secondary application. In various embodiments, the portion of the input data that the keyboard application manager sends to the secondary application may be a portion of the input data that the keyboard application manager found to fall within the category.

In various embodiments, the keyboard application manager, upon activating any of the secondary applications described herein, may move the input data, or a portion thereof, from a first location (e.g. the location 38 of the variable memory 16) to a second location in memory (e.g. a location in the variable memory 16 that the secondary application has access to) such that the secondary application can read the input data or the portion thereof. In various embodiments, the portion of the input data that the keyboard application manager stores in the second location may be a portion of the input data that the keyboard application manager found to fall within the category.

If the keyboard application manager detects selection of the icon 244, the keyboard application manager invokes the codes of flowchart 300 as shown in FIG. 11. In various embodiments, execution of the flowchart 300 may be initiated by block 128 of the flowchart 120 shown in FIG. 2. In various embodiments, if the keyboard application manager is configured to detect selection of the icon 244, the keyboard application manager may hand over control of all or a portion of the display 20 displaying the keyboard 104 and/or the status notification bar 126 to the secondary application associated with the selected icon 244.

In various embodiments, the codes in flowchart 300 may be encoded in a different block of codes from the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. In the embodiment shown in FIG. 11, the flowchart 300 is encoded in the block of codes 34 for directing the personal computing device 10, as shown in FIG. 1, to effect secondary application functions. More particularly, the flowchart 300 is encoded in a Contact Manager application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 300 depicts a process effected by the Contact Manager application.

In various embodiments, because the block of codes encoding the flowchart 300 is encoded separately from the flowchart 200 there is modularity between the blocks of codes encoding the flowcharts 200 and 300 and thus the blocks of codes encoding the flowcharts 200 and 300 may be encoded separately and by or with different entities. In various embodiments, the keyboard application manager may be configured by a first entity and secondary applications such as the Contact Manager application, may be configured by a second entity different from the first entity. In various embodiments, the keyboard application manager (or more generally the input application manager) is configured to, or to permit the second entity (e.g. an application running remotely on a server or other networked device) to, associate secondary application(s) related to the second entity with a category or categories defined in association with the first entity. In various embodiments this may be supported by registering, via the keyboard application manager, such secondary application(s) in association with a predetermined or configurable set of categories to which the second entity is or is to be associated with. In some embodiments, the keyboard application manager may be configured to permit the second entity to be involved in defining the category or categories that the second entity's secondary application is to be associated with. For example, the second entity may, via the keyboard application manager, define or identify various particular words or patterns to be associated with a particular category that the secondary application is to be associated with. The particular words or patterns to be associated with a particular category may be periodically updated by the second entity, such that the words or patterns associated with the category are dynamically configurable using the keyboard application manager. In some variations, for example, terms, words, or phrases which are to be included in Advertisement patterns, discussed below, may be defined by a remote entity in cooperative communication with a secondary application serving as an Advertisement application. For example the remote entity may be an online merchant service, such as Amazon.com™, Ebay™ or Groupon™. The Advertisement application may receive from the remote entity new or amended words or patterns to link or assign to a category in association with the Advertisement application, and in response to receiving instructions to do so, the Advertisement application can request that the keyboard application manager update the terms, words, or phrases included in the Advertisement patterns monitored by the keyboard application manager in association with the Advertisement application. These type of updates may be performed one, regularly or at various times at the prompting of the second entity (in this example the remote entity). For instance, such updates may be associated with a temporary sale or offer available from or through the online merchant service.

The flowchart 300 begins with block 302 which directs the Contact Manager application to read contact information stored in memory (e.g. in the location 49 of the variable memory 16 shown in FIG. 1), to find and display contacts having respective contact information fields corresponding to the input data (e.g. as stored in the location 38 of the variable memory 16). In various embodiments, the contact information stored in the memory is stored and managed by a contact manager device application and is thus accessible to a plurality of applications, including the contact manager device application. An exemplary contact 320 stored in memory (e.g. in the location 49) is shown in FIG. 12. The contact 320 has various contact information fields including a first name field 324, a last name field 326, a home phone number field 328, a work phone number field 327, a mobile phone number field 329, an email address field 330, an address field 332, a city field 333, a postal code field 335, a birthday field 337, and a profile picture field 339. In various embodiments, the contact 320 may be stored as an XML, CSV, or any other data structure recognizable to the Contact Manager application, for example. Other contacts may include additional or fewer fields than those included in the contact 320 shown in FIG. 12. For example, some additional examples of contact information fields that may be included in an additional contact are: a company field, a title field, multiple address fields, a spouse's name field, or an appointment place field.

In various embodiments, if it was determined at block 202 of the flowchart 200 shown in FIG. 5, that the input data stored in the memory fell within the Proper Noun Category because the input data included a word starting with an upper case character, i.e. “Mark”, block 302 shown in FIG. 11 directs the Contact Manager application to find and display a list of contacts 316 having a first name field or a last name field including the text included in the word that was found to begin with an upper case letter, i.e. “Mark”, as shown in FIG. 13. In various embodiments, the keyboard application manager may send a portion of the input data found to fall within the category (in the example shown, the word “Mark”), to the Contact Manager application such that the Contact Manager application can find and display the list of contacts 316 having a first name field or a last name field including the text included in the word that was found to begin with an upper case letter.

In this embodiment, the contact 320 shown in FIG. 12 includes the word “Mark” in the first name field 324 and thus, block 302 directs the Contact Manager application to find and display the contact 320 in the list of contacts 316. In the embodiment shown in FIG. 13, other contacts having first name or last name fields including the word “Mark” are also found to correspond to the input data. For example, in the embodiment shown, contacts having the names Mark Doe, and Paul Rosenmark were found to include contact information fields corresponding to the input data.

Block 303 directs the Contact Manager application to detect user selection of one of the displayed contacts. In this embodiment, the Contact Manager application detects selection of the contact 320 and the Contact Manager application proceeds to block 304.

Block 304 directs the Contact Manager application to display at least one of the contact information fields of the selected contact on the display 20 for selection by the user. In the embodiment shown in FIG. 14, the Contact Manager detected user selection of the contact 320 at block 303 and thus various contact information fields of the contact 320 are displayed on the display 20. In the illustrated embodiment, the profile picture field 339, the first name field 324, the last name field 326, the home phone number field 328, and the email address field 330 are displayed on the display 20 for selection. Block 304 also directs the Contact Manager application to display a Back icon 340, a Done icon 334, a Clip icon 336, and a Pin icon 338 on the display 20 for user selection.

Block 305 directs the Contact Manager application to determine whether the Back icon 340 has been selected by the user, and if the Back icon 340 has been selected, the Contact Manager application is directed to return to block 302 to redisplay the list of contacts 316 on the display 20.

Block 306 then directs the Contact Manager application to detect selection of at least one of the contact information fields. In this way, the user can select which of the contact information fields that the user wishes to eventually store or use. In the embodiment shown in FIG. 14, the Contact Manager application detects selection of the home phone number field 328 and thus an area surrounding the home phone number field 328 is shown as shaded.

Block 308 directs the Contact Manager application to detect selection of one of the Done, Clip and Pin icons 334, 336, and 338. In various embodiments, each of the processes initiated by selection of one of the Done, Clip and Pin icons 334, 336, and 338 or any other similar icons described herein may act as a secondary input action different from the detection of keystrokes received from the user. If at block 308, the Contact Manager application detects selection of the Done icon 334, the process proceeds to block 310.

Block 310 directs the Contact Manager application to add the selected at least one contact information field to the input data stored in memory (e.g. in the location 38 of the variable memory 16). In various embodiments herein, when any secondary application is said to modify or add to the input data stored in memory and received from the keyboard program, this may involve sending a message to the keyboard application manager such that the keyboard application manager modifies or adds to the input data, or such that the keyboard application manager sends a message to the keyboard program to cause the keyboard program to modify or add to the input data.

In various embodiments, block 310 also directs the Contact Manager application to cause the keyboard to be redisplayed, as shown in FIG. 15. In various embodiments, in this specification, when any secondary application is said to cause the keyboard to be redisplayed, this may involve handing control of the personal computing device 10 over to the keyboard program and the keyboard application manager. In other embodiments, block 310 may direct the Contact Manager application to continue to display the contact information fields such that the user can add multiple contact information fields without redisplaying the keyboard. In various embodiments, the user may redisplay the keyboard at any time during the flowchart by selecting a close secondary application icon, such as for example an “X” at the top right corner of the portion of the display 20 displayed by the Contact Manager application (not shown). In various embodiments, any of the secondary applications described herein may include similar functionality having regard to each of the secondary applications' respective Done or Add to icons.

Where the home phone number field 328 has been selected, block 310 directs the Contact Manager application to add the home phone number field 328 to the input data stored in memory (e.g. in the location 38 of the variable memory 16). In various embodiments, the input data is stored in a location (such as the location 38 of the variable memory) which is accessible to the device application displaying the portion 106 of the display 20 and is recognized by the device application as if the input data was received via the keyboard program. The device application thus displays the input data including the home phone number field 328, as if the input data including the phone number field had been provided via the keyboard program, as shown in FIG. 15. Accordingly, using the Contact Manager application, the user is able to quickly add contact information to input data as part of text, documents, emails or other words or phrases that the user may be creating or modifying. In various embodiments, block 312 directs the Contact Manager application to store the selected at least one contact information fields in memory in a markup language understandable by the device application, such as, for example in Extensible Markup Language (“XML”).

In various embodiments block 310 may also direct the Contact Manager application to include connecting text with the selected contact information fields and add the connecting text and the selected contact information fields to the input data. The connecting text may allow the user to more easily understand the amendment to the input data. In some variations, for example, if the user selected the home phone number field 328, the Contact Manager may add the connecting text, “whose home phone number is” followed by the home phone number field 328 to the input data such that the input data would include the following text, “Hi, please phone Mark whose home phone number is 555-1234”. In various embodiments, block 310 may also direct the Contact Manager application to add connecting text between the selected contact information fields when more than one contact information fields are selected by the user. In various embodiments, the Contact Manager may add the connecting text, “whose home phone number is” followed by the home phone number field 328, followed by the connecting text “and whose email address is” followed by the email address field 330 to the input data such that the input data would include the following text, “Hi, please phone Mark whose home phone number is 555-1234 and whose email address is mark@email.com”. In various embodiments, the connecting text may be customizable by the user.

If at block 308, the Contact Manager application detects selection of the Clip icon 336, the process proceeds to block 312. Block 312 directs the Contact Manager application to store the selected at least one of the contact fields as clipboard data in memory (e.g. in the location 39 of the variable memory 16 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments herein, when any secondary application is said to store information as clipboard data, this may involve sending a message to the keyboard application manager such that the keyboard application manager stores the information as clipboard data, or such that the keyboard application manager sends a message to the keyboard program to store the information as clipboard data.

In various embodiments, block 312 may direct the Contact Manager application to cause the keyboard to be redisplayed and hand control of the personal computing device 10 back to the keyboard program and the keyboard application manager, as shown in FIG. 16. However in other embodiments, block 312 may direct the Contact Manager application to continue to display the contact information fields such that the user can copy and paste multiple contact information fields without redisplaying the keyboard. In various embodiments, the user may redisplay the keyboard at any time during the flowchart by selecting a close secondary application icon, such as for example an “X” at the top right corner of the portion of the display 20 displayed by the Contact Manager application (not shown). In various embodiments, any of the secondary applications described herein may include similar functionality having regard to each of the secondary applications' respective Clip icons.

As is understood by one of ordinary skill in the art, data stored as clipboard data in memory (e.g. in the location 39 of the variable memory 16) may be copied from memory and added to an input string (e.g. the input data stored in the location 38 of the variable memory 16) or to any editable text, field, or document at a later time whenever the user directs the processor 12 to execute a “paste” clipboard function. In various embodiments, block 312 directs the Contact Manager application to store the selected at least one of the contact fields in memory in a markup language such as, for example as XML data.

If at block 308, the Contact Manager application detects selection of the Pin icon 338, the process proceeds to block 314. Block 314 directs the Contact Manager application to generate state information defining a state of the Contact Manager application and store the state information in memory (e.g. in the location 46 of the variable memory 16). In various embodiments herein, when any secondary application is said to store state information, this may involve sending a message to the keyboard application manager such that the keyboard application manager stores the state information, or such that the keyboard application manager sends a message to the keyboard program to store the state information.

In various embodiments, the state information stored in memory may include a display identifier for identifying what the secondary application was displaying at the time that the Pin icon 338 was selected. In this embodiment, the state information may include a contact identifier for identifying a contact that was being displayed on the display 20 when the Pin icon 338 was selected. The state information stored in memory may also include a secondary application identifier and a copy of the input data or the portion of the input data that the keyboard application manager found to fall within the category at block 202 of the flowchart 200 shown in FIG. 5. In various embodiments, for example, the state information may include a contact identifier corresponding to the contact 320 (e.g. “Mark Smith”), a Contact Manager application identifier, and the text, “Mark”. Block 314 also directs the Contact Manager application to cause the keyboard 104 to be redisplayed on the display 20 and to cause the keyboard application manager to display a resume state icon 315 on the display 20, as shown in FIG. 17. In various embodiments, the Contact Manager application may cause the keyboard application manager to display the resume state icon 315 by storing a resume state indicator in the memory, for indicating that a state has been stored in memory (e.g. in the location 46) such that the keyboard application manager reads the resume state indicator and, based on the resume state indicator, displays the resume state icon 315 on the display 20. In various embodiments, the Contact Manager application may cause the keyboard application manager to display the resume state icon 315 by sending the keyboard application manager a resume state message.

In various embodiments, once the resume state icon 315 is displayed on the display 20, blocks stored in the block of codes 32 of the program memory 14 direct the keyboard application manager to detect selection of the resume state icon 315 and, upon detecting selection of the resume state icon, direct the keyboard application manager to reactivate or reinvoke the Contact Manager application. In various embodiments, the keyboard application manager may send the Contact Manager application the state information or the Contact Manager application may be directed to read the state information stored in memory (e.g. in the location 46 of the variable memory 16) and, using the state information, proceed back to block 304 to display the contact that was being displayed on the display 20 when the Pin icon 338 was selected.

Other Contact Manager Categories

In various embodiments described above with reference to FIG. 5, block 202 of the flowchart 200 involved, for illustration purposes, applying the Proper Noun category test to the input data stored in the location 38 to determine whether the input data includes a word beginning with an upper case letter and thus fell into the Proper Noun category. However, in other embodiments, different category tests may be applied at block 202.

In various embodiments, block 202 directs the keyboard application manager to apply a category test by determining whether the input data stored in the memory (e.g. in the location 38 of the variable memory 16) includes at least one of a plurality of patterns detectable by the keyboard application manager.

In various embodiments, the plurality of patterns detectable by the keyboard application manager include phone number patterns and applying the category test involves determining whether the input data includes one of the phone number patterns and thus falls within a Phone Number category. In such an embodiment block 202 may direct the keyboard application manager to determine whether the input data includes one of the following patterns: “(NNN) NNN-NNNN”, “NNN NNN NNNN”, “NNN NNNN”, “NNNNNNN”, “NNNNNNNNNN”, “NNN-NNN-NNNN”, or “NNN-NNNN”, where N indicates that the text could be any number. Although the above exemplary phone number patterns may identify most standard Canadian phone numbers, in various embodiments, the phone number patterns may differ to allow for identification of various regional or international phone number patterns.

Various secondary applications may be associated with the Phone Number category. In some variations, for example, the Contact Manager application may be associated with the Phone Number category. As shown in FIG. 6, in various embodiments, the Contact Manager application data structure includes a Phone number category identifier 248 and thus, the keyboard application manager may be directed to display the Contact Manager icon on the display 20 if the keyboard application manager determines that the input data stored in the memory (e.g. in the location 38 of the variable memory 16) falls within the Phone Number category.

In this embodiment, if the user selects the Contact Manager, the keyboard application manager activates or invokes the Contact Manager application and block 302, as shown in FIG. 11 directs the keyboard application manager to find and display contacts having a phone number field which includes a portion of the input data that matched the one of the phone number patterns. For example, if the input data included a portion of text that read “555-1234”, block 202 would direct the keyboard application manager to determine that the input data included the pattern NNN-NNNN and block 302 would direct the Contact Manager application to find and display contacts having a phone number field including “555-1234”. In various embodiments, the phone number field could include additional numbers and still be found to include the “555-1234”. In some variations, for example, a contact having a phone number field of “604-555-1234” may be found to correspond to the input data including 555-1234.

In various embodiments, the plurality of patterns detectable by the keyboard application manager include address patterns and applying the category test involves determining whether the input data stored in memory (e.g. in the location 38 of the variable memory 16) includes one of the address patterns and thus falls within an Address category. In such embodiments block 202 may direct the keyboard application manager to determine whether the input data includes a number having one or more digit followed by a space followed by a word (or in various embodiments, 1, 2, 3 or more words) followed by a street indicator such as, for example, one of the following: “Road”, “Rd.”, “Street”, “St.”, “Avenue”, “Ave.”, or some other street related input pattern.

Various secondary applications may be associated with the Phone Number category. For example, in some embodiments, the Contact Manager application may be associated with the Phone Number category. As shown in FIG. 6, the Contact Manager application data structure 240 includes an Address category identifier 250 and thus, the keyboard application manager may be directed to display the Contact Manager icon on the display 20 if the keyboard application manager determines that the input data stored in memory falls within the Address category. In this embodiment, if the user selects the Contact Manager, the keyboard application manager activates or invokes the Contact Manager application, such as by invoking the flowchart 300 shown in FIG. 11, and block 302 directs the Contact Manager application to find and display contacts having respective address fields which include a portion of the input data that matched the one of the address patterns. In some variations, for example, if the input data included a portion of text that read “1234 Broadway St.”, block 202 directs the keyboard application manager to determine that the input data includes a number having more than one digit (i.e. 1234), followed by a space, followed by a word (i.e. Broadway), followed by a street indicator (i.e. “St.”) and block 302 directs the Contact Manager application to find and display contacts having an address field including “1234 Broadway St.”.

In various embodiments, the plurality of patterns detectable by the keyboard application manager include email address patterns and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the email address patterns and thus falls within an Email Address category. In such embodiments, block 202 may direct the keyboard application manager to determine whether the input data includes e-mail permissible text, including hyphens, underscores, or periods, followed by an @ symbol, followed by further text including hyphens, underscores, or periods, followed by a top level domain, such as for example: .com, .ca, .net, .org, .biz, or some other top level domain. Various secondary applications may be associated with the Phone Number category. For example, in some embodiments, the Contact Manager application may be associated with the Phone Number category. As shown in FIG. 6, the Contact Manager application data structure 240 includes an Email Address category identifier 252 and thus, the keyboard application manager may be directed to display the Contact Manager icon on the display 20 if the keyboard application manager determines that the input data stored in memory (e.g. in the location 38 of the variable memory 16) falls within the Email Address category. In some variations, for example, if the input data included a portion of text that read mark@email.com, block 202 directs the processor 12 to determine that the input data included e-mail permissible text (i.e. “mark”) followed by an @ symbol, followed by text (i.e. “email”) followed by a top level domain (i.e. “.com”) and block 302, as shown in FIG. 11, directs the processor 12 to find and display contacts having respective email address fields including “mark@email.com”. In such embodiments, when the user selects the Contact Manager icon, the keyboard application manager activates or invokes the Contact Manager application and block 302 directs the Contact Manager application to find and display contacts having email address fields which include the portion of the input data that matched the one of the email address patterns (i.e. mark@email.com).

In various embodiments, the above embodiments may be equally applied having regard to any of the contact information fields. In some variations, for example, there are provided at least one contact stored in memory (e.g. in the location 49 of the variable memory 16) that includes in the contact information fields, a place name, a company name, and/or a job name, and, in various embodiments, the Contact Manager application data structure 240 may include a place name category identifier, a company name category identifier, and/or a job name category identifier corresponding to a place name, company name, and job name category.

In such embodiments, the plurality of patterns detectable by the keyboard application manager may include place names, company names, or job names and applying the category test may involve determining whether the input data stored in memory (e.g. in the location 38 of the variable memory 16) includes one of the place names, company names or job names respectively to determine whether the input data falls within a place name, company name, or job name category, respectively.

In such embodiments, the keyboard application manager may be directed to display the Contact Manager icon on the display 20 if the keyboard application manager determines that the input data stored in the memory (e.g. in the location 38 of the variable memory 16) includes one of the place names, company names or job names and thus falls within one of the place name, company name, or job name category. In such embodiments, when the user selects the Contact Manager icon, the keyboard application manager can activate or invoke the Contact Manager application and block 302 can direct the Contact Manager application to find and display contacts having place name, company name, or job name fields which correspond to the portion of the input data that was determined to include the place name, company name, or job name pattern.

Conversion Applications

While, for illustration purposes, the above embodiments have been described having regard to the Contact Manager application, various secondary applications may be invoked by the keyboard application manager similarly. Referring now to FIG. 18, the personal computing device 10 shown in FIG. 1 is shown according to another embodiment. The personal computing device 10 shown in FIG. 18 includes all of the elements shown in FIG. 1 in addition to some further elements. Referring to FIG. 18, the program memory 14 includes, in addition to the blocks of codes shown in FIG. 1, a block of code 37 for directing the personal computing device 10 to effect multi-select application functions and a block of code 35 for directing the personal computing device to effect pattern recognizer functions.

Further, in the embodiment shown in FIG. 18, the variable memory 16 includes, in addition to the locations shown in FIG. 1, location 40 for storing multi-select input data, location 41 for storing context data, location 48 for storing recently used secondary application data, location 50 for storing network connection data, location 52 for storing location information, location 56 for storing allowed location data, location 54 for storing login data, location 62 for storing context category data, location 64 for storing image data, location 65 for storing installed secondary applications data, location 58 for storing employee data, location 66 for storing secondary application group data, location 68 for storing calendar data, location 69 for storing web browser data, and location 47 for storing music data. Of course, the variable memory 16 may also include additional locations not shown in FIG. 18.

Further, in the embodiment shown in FIG. 18, the personal computing device 10 includes, in addition to the elements shown in FIG. 1, a global positioning system (GPS) receiver and transmitter 21, a near field communication (NFC) receiver and transmitter 23, and a Bluetooth receiver and transmitter 25 which cooperate under the direct or indirect control of the processor 12. In various embodiments, the NFC receiver and transmitter 23 or the Bluetooth receiver and transmitter 25 may enable a network connection similar to as described above for the I/O interface 18. In various embodiments, the personal computing device 10 may also include a gyroscope or accelerometer (not shown).

Referring now to FIGS. 5 and 18, in various embodiments, block 202 directs the keyboard application manager to apply a category test by determining whether the input data stored in the memory (e.g. in the location 38 of the variable memory 16) includes at least one of a plurality of patterns detectable by the keyboard application manager.

In various embodiments, the plurality of patterns detectable by the keyboard application manager include units of measurement patterns and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the unit of measurement patterns to determine whether the input data falls within a Measurement Conversion category. In various embodiments, the unit of measurement patterns may be a number followed by text corresponding to a unit of measurement. In such embodiments, block 202 may direct the keyboard application manager to determine whether the input data includes a number followed by a unit of measurement such as, for example, any of the following text: meters, m., grams, g., kilograms, kg., litres, l., feet, ft., inches, in., yards, yd., or other measurable units. In the embodiment shown in FIG. 19, the input data includes a number (i.e. “1300”) followed by text corresponding to one of the unit of measurement patterns (i.e. “kg”) and thus, block 202 directs the keyboard application manager to determine that the input data falls within the Measurement Conversion category.

Various secondary applications may be associated with the Measurement Conversion category. In some variations, for example, a Measurement Conversion application may be provided as a form of secondary application for converting units of measurements entered by the user and may be associated with the Measurement Conversion category. In various embodiments, the Measurement Conversion application may be defined in the block 34 of the program memory 14 as shown in FIG. 18. A Measurement Conversion application data structure similar to the Contact Manager application data structure 240 shown in FIG. 11 may be stored in memory (e.g. in the location 44 of the variable memory 16) and may include a Measurement Conversion category identifier identifying the Measurement Conversion category. Thus, in various embodiments, block 204 of the flowchart 200 shown in FIG. 5 may direct the keyboard application manager to display a Measurement Conversion application icon 366 on the display 20 for selection, as shown in FIG. 19 if the input data stored in memory (e.g. in the location 38 of the variable memory 16) is determined to fall within the Measurement Conversion category. In various embodiments, if at block 206, the keyboard application manager detects selection of the Measurement Conversion application icon 366, the keyboard application manager is directed to activate or invoke the Measurement Conversion application by invoking flowchart 400 shown in FIG. 20.

As described for the flowchart 300 shown in FIG. 11, the flowchart 400 may be encoded in a different block of codes from the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. For example, the flowchart 400 may be encoded in a Measurement Conversion application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 400 depicts a process effected by the Measurement Conversion application.

The flowchart 400 begins at block 402 which directs the Measurement Conversion application to read and display on the display a first number 424 and a first unit 422 identified from the input data (e.g. as stored in the location 38 of the variable memory 16), as shown in FIG. 21. In this embodiment, where the input data includes “1300 kg”, the first unit 422 is a unit of measurement and in various embodiments, may be identified by the Measurement Conversion application by comparing the input data to stored units of measurements in memory. The first number 424 may be identified by the Measurement Conversion application as a number in the input data immediately preceding the first unit of measurement.

For example, in the embodiment shown in FIG. 21, where the input data includes the text “The structure weighs 1300 kg”, block 402 may direct the Measurement Conversion application to read the first unit of measurement as “kg” and the first number as “1300”.

Block 404 then directs the Measurement Conversion application to generate and display a second number 428 and a second unit 426 based on the first number 424 and the first unit 422 and to display a Replace icon 430, an Add To icon 432, a Clip icon 434, and a Pin icon 436. In various embodiments, the second unit 426 is a unit of measurement retrieved by the Measurement Conversion application from memory. The second unit 426 may be chosen from stored units of measurements associated with the first unit. For example, in the embodiment shown where the first unit 422 is a unit for measuring mass, the second unit 426 may be chosen from stored units that are also units of mass and thus associated with the first unit 422. In various embodiments, the second unit may be displayed in association with an arrow selectable to activate a pull down menu displaying a plurality of alternate units of measurement and the user may select the pulldown menu to choose a different second unit from the plurality of alternate units of measurement.

In various embodiments, block 404 directs the Measurement Conversion application to generate the second number 428 by retrieving a stored ratio associated with the first and second units of measurement 422 and 426 from the variable memory 16 and applying the stored ratio to the first number 424. In the embodiment shown, the stored ratio associated with the first and second units of measurement 422 and 426 is 2.20462 and the second number 428 is generated by multiplying the first number by 2.20462. In various embodiments, the stored ratio may be stored in memory separate from the personal computing device 10 and may be accessible by the Measurement application via a network such as the one or more networks 27 via the I/O interface 18, for example.

Block 408 directs the Measurement Conversion application to detect selection of one of the Replace, Add To, Clip, and Pin icons 430, 432, 434, and 436. In various embodiments, each of the processes initiated by selection of one of the Replace, Add To, Clip, and Pin icons 430, 432, 434, and 436 or any other similar icons described herein may act as a secondary input action different from the detection of keystrokes received from the user. If at block 408, the Measurement Conversion application detects selection of the Replace icon 430, the process proceeds to block 409.

Block 409 directs the Measurement Conversion application to replace the first number and the first unit 424 and 422 in the input data (e.g. as stored in the location 38 of the variable memory 16) with the second number and the second unit 428 and 426 as generated by the Measurement Conversion application. In various embodiments, such as in the embodiment shown in FIG. 21, where the second number is 2866 and the second unit is “pounds”, block 409 directs the Measurement Conversion application to amend the input data (e.g. as stored in the location 38 of the variable memory 16) to include the text “The structure weighs 2866 pounds”. Block 409 then directs the Measurement Conversion application to cause the keyboard 104 to be redisplayed on the display 20 as shown in FIG. 22.

If, at block 408, the Measurement Conversion application detects selection of the Add To icon 432, the process proceeds to block 410. Block 410 directs the Measurement Conversion application to add connecting text, the second number 428 and the second unit 426 to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard 104 to be redisplayed, as shown in FIG. 23. In various embodiments, the connecting text may be “which is” and thus where the second number is 2866 and the second unit is “pounds”, block 410 may direct the Measurement Conversion application to amend the input data (e.g. as stored in the location 38 of the variable memory 16) to include the text “The structure weighs 1300 kg which is 2866 pounds” which may be displayed on the display 20 by the device application as shown in FIG. 23.

If at block 408, the Measurement Conversion application detects selection of the Clip icon 434, the process proceeds to block 412. Block 412 directs the Measurement Conversion application to store the second number 428 and the second unit 426 in memory as clipboard data (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 408 may then direct the Measurement Conversion application to cause the keyboard to be redisplayed, as shown in FIG. 19.

If at block 408, the Measurement Conversion application detects selection of the Pin icon 436, the process proceeds to block 414 which directs the Measurement Conversion application to generate state information defining a state of the Measurement Conversion application and store the state information in memory (e.g. in the location 46 of the variable memory 16). In various embodiments, the state information stored in memory may include a display identifier for identifying what the secondary application was displaying at the time that the Pin icon 436 was selected. In various embodiments, the state information may include the first number 424, the first unit 422, and the second unit 426. The state information may also include a secondary application identifier (i.e. a Measurement Conversion application identifier).

Block 414 directs the Measurement Conversion application to cause the keyboard 104 to be redisplayed on the display 20 and to cause the keyboard application manager to display a resume state icon 415 on the display 20, generally as described and shown above having regard to FIG. 17, for example, and as shown in FIG. 24. Additional blocks stored in the block of codes 32 of the program memory 14 may then direct the keyboard application manager to detect selection of the resume state icon 415 and upon detecting selection of the resume state icon, the additional blocks may direct the keyboard application manager to reactivate or reinvoke the Measurement Conversion application. The Measurement Conversion application is then directed to read the state information stored in memory (e.g. in the location 46 of the variable memory 16), and using the state information, reactivate or reinvoke the Measurement Conversion application, proceeding back to block 402 to display the first number 424 and the first unit 422 that were displayed on the display 20 when the Pin icon 436 was selected.

Currency

In another embodiment, the plurality of patterns detectable by the keyboard application manager include currency patterns and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) corresponds to one of the currency patterns and thus falls within a Currency category. In such an embodiment block 202 may direct the keyboard application manager to determine whether the input data includes a number followed by a currency indicator, such as for example, any of the following text: dollars, CAD, USD, pounds, Francs, F., Euros, or some other currency-related input pattern. or whether the input data includes any of the following currency symbols: $, £, €, or some other currency symbol related input pattern. followed by a number. In the embodiment shown in FIG. 27, the input data includes the following text, “That will cost $40”. In such an embodiment, block 202 directs the keyboard application manager to determine that the input data includes one of the currency symbols (i.e. $) followed by a number (i.e. 40) and thus determines that the input data includes one of the currency patterns and falls within the Currency category.

Various secondary applications may be associated with the Currency category. In some variations, for example, a Currency application may be provided as a form of secondary application for converting between units of currency entered by the user and may be associated with the Currency category. In various embodiments, the Currency application may be defined in the block 34 of the program memory 14 as shown in FIG. 18. In such embodiments, a Currency application data structure similar in format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Currency category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Thus, block 204 of the flowchart 200 shown in FIG. 5 may direct the keyboard application manager to display a Currency icon 480 on the display 20 for selection when the input data stored is found to fall within the Currency category, as shown in FIG. 25. In various embodiments, if at block 206, the keyboard application manager detects selection of the Currency icon 480, the keyboard application manager may activate or invoke the Currency application by invoking a flowchart 500 as shown in FIG. 26, the flowchart 500 having blocks generally similar to the blocks included in the flowchart 400.

As described for the flowchart 300 shown in FIG. 11, the flowchart 500 may be encoded in a different block of codes from the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. In various embodiments, the flowchart 500 may be encoded in a Currency application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 500 depicts a process effected by the Currency application.

The flowchart 500 begins at block 502 which directs the Currency application to read and display on the display 20 a first number 524 and a first unit 522 identified from the input data (e.g. as stored in the location 38 of the variable memory 16), as shown in FIG. 27. In the embodiment shown in FIG. 27, where the input data includes “$40”, the first unit 522 is a unit of currency identified by the Currency application by comparing the input data to stored units of currency in memory. In this embodiment, the first number 524 may be identified as a number immediately following the first unit 522 in the input data. For example, in the illustration shown, where the input data includes the text, “That will cost $40”, block 502 may direct the Currency application to read the first unit 522 as “$” and the first number 524 as “40”. In various embodiments, where the first unit 522 is identified as a unit that normally follows a number (i.e. where the first unit 522 is “dollars”) the first number 524 may be identified as a number in the input data immediately preceding the first unit 522 and the first number 524 may be displayed on the display 20 to the left of the first unit 522.

Block 504 then directs the Currency application to generate and display a second unit 526 and a second number 528 based on the first unit 522 and the first number 524. Block 504 also directs the Currency application to display on the display 20, a Replace icon 530, an Add To icon 532, a Clip icon 534, and a Pin icon 536. In various embodiments, the second unit 526 is a unit of currency which is chosen by the user from a pull down menu including a plurality of units of currency stored in memory. In various embodiments, block 504 directs the Currency application to generate the second number 528 by retrieving a stored ratio associated with the first and second units of currency 522 and 526 from memory (e.g. from a location in the variable memory 16) and applying the stored ratio to the first number 524. In the embodiment shown, the stored ratio associated with the first and second units of currency 522 and 526 is an exchange rate of 0.76 and the second number 528 is generated by multiplying the first number 524 by 0.76. In various embodiments, the stored ratio may be stored in memory separate from the personal computing device 10 and may be accessible by the Currency application via a network such as the one or more networks 27 via the I/O interface 18, for example.

Block 508 directs the Currency application to detect selection of one of the Replace, Add To, Clip, and Pin icons 530, 532, 534, and 536. If at block 508, the Currency application detects selection of the Replace icon 530, the process proceeds to block 509.

Block 509 directs the Currency application to replace the first unit 522 and the first number 524 in the input data (e.g. as stored in the location 38 of the variable memory 16) with the second unit 526 and the second number 528 as generated by the Currency application. In the embodiment shown in FIG. 27, where the second number 528 is 30.30 and the second unit 526 is “f”, block 509 directs the Currency application to amend the input data (e.g. as stored in the location 38 of the variable memory 16) to include the text “That will cost €30.30”. Block 509 then directs the Currency application to cause the keyboard to be redisplayed on the display 20.

If, at block 508, the Currency application detects selection of the Add To icon 532, the process proceeds to block 510. Block 510 directs the Currency application to add connecting text, the second number 528 and the second unit 526 to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. The connecting text may be “which is”, in this embodiment, where the second number is “30.30” and the second unit is “€”, block 510 directs the Currency application to amend the input data (e.g. as stored in the location 38 of the variable memory 16) to include the text “That will cost $40 which is €30.30”, which may be displayed on the display 20 by the device application.

If at block 508, the Currency application detects selection of the Clip icon 534, the process proceeds to block 512. Block 512 directs the Currency application to store the second unit 526 and the second number 528 in memory as clipboard data (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 508 may then direct the Currency application to cause the keyboard to be redisplayed.

If at block 508, the Currency application detects selection of the Pin icon 536, the process proceeds to block 514 which directs the Currency application to generate state information defining a state of the Currency application and store the state information in the memory (e.g. in the location 46 of the variable memory 16). In various embodiments, the state information stored in memory may include a display identifier for identifying what the secondary application was displaying at the time that the Pin icon 536 was selected. In this embodiment, the state information may include the first number 524, the first unit 522, the second number 528 and the second unit 526. The state information may also include a secondary application identifier (i.e. a Currency application identifier)

Block 514 directs the Currency application to cause the keyboard to be displayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Calculator

In various embodiments, the plurality of patterns detectable by the keyboard application manager include number patterns for identifying numbers and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the number patterns to determine whether the input data falls within a Number category. In such an embodiment block 202 the number patterns may include a numeric sequence that is operable by a calculator, such as, for example, any number.

Various secondary applications may be associated with the Number category. In some variations, for example, a Calculator application may be provided as a form of secondary application for performing mathematical operations on numbers or functions included in the input data and may be associated with the Number category. In various embodiments, the Calculator application may be defined in the block 34 of the program memory 14. In such embodiments, a Calculator application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Number category identifier may be stored in the variable memory 16 (e.g. in the location 44). Accordingly, block 204 may direct the keyboard application manager to display a Calculator icon on the display 20 for selection when the input data from the user is found to fall within the Number category. In the embodiment shown in FIG. 19, the keyboard application manager is directed to display the Calculator icon 550 on the display 20 since the input data includes a number (i.e. 1300). If at block 206, the keyboard application manager detects selection of the Calculator icon 550, the keyboard application manager is directed to activate or invoke the Calculator application by invoking a flowchart 560 as shown in FIG. 28.

As described for the flowchart 300 shown in FIG. 11, the flowchart 560 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 560 may be encoded in a Calculator application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 560 depicts a process effected by the Calculator application.

The flowchart 560 begins at block 561 which directs the Calculator application to determine whether the input data includes a formula. To do this, the Calculator application may determine whether the input data includes text corresponding to an operator and a number associated with the text. For example, the Calculator may determine whether the input data includes any of the following text: N/N, N*N, N+N, N−N, sin (N), cos(N), tan(N) which may or may not be followed by further such as for example an equals symbol (i.e. “=”). If the input data does not include a formula, the process proceeds to block 562. For example, for the embodiment shown in FIG. 19, wherein for illustration purposes the input data includes “The structure weighs 1300 kg”, the Calculator application would determine at block 561 that the input data does not include a formula and the process would proceed to block 562.

Block 562 directs the Calculator application to display a calculator 360 having a plurality of keys for user selection as shown in FIG. 29. In the embodiment shown, the plurality of keys for illustration purposes include number keys, only one of which is labeled at 362, a division key 580, a multiply key 582, an addition key 584, a subtraction key 586, and an enter or equals key 588. However in various embodiments, other calculator function keys may be displayed on the display 20 such as, by way of example only but not limited to sin, cos, tan, x^(y), or 1/x keys.

Block 562 also directs the Calculator application to read a first number from the input data (e.g. as stored in the location 38 of the variable memory 16) and to display the first number in a calculator box 364. In the embodiment shown in FIG. 29, the input data for illustration purposes includes the text “The structure weighs 1300 kg” and the Calculator application is directed to read and display “1300” as the first number. Block 562 also directs the Calculator application to display a Replace icon 590, an Add To icon 592, a Clip icon 594, and a Pin icon 596 on the display 20.

Block 564 directs the Calculator application to detect user selection of at least one of the plurality of keys, and generate and display a second number based on the first number and the selected at least one of the plurality of keys. In one embodiment, the Calculator application detects user selection of the multiply key 582, the number 2 key, and the enter key 588. In such an embodiment, block 564 directs the Calculator application to generate the second number to be equal to 1300 multiplied by 2 (i.e. 2600). Thus block 564 directs the Calculator application to display the second number (i.e. 2600) in the calculator box 364, as shown in FIG. 30.

Block 566 then directs the Calculator application to detect selection of one of the Replace, Add To, Clip, or Pin icons 590, 592, 594, and 596. If at block 566, the Calculator application detects selection of the Replace icon 590, the process proceeds to block 568.

Block 568 directs the Calculator application to replace the first number in the input data (e.g. as stored in the location 38 of the variable memory 16) with the second number as generated by the Calculator application. In this embodiment, where the second number is “2600” and the input data was originally “The structure weighs 1300 kg”, block 568 directs the Calculator application to amend the input data (e.g. as stored in the location 38 of the variable memory 16) to be “The structure weighs 2600 kg”. Block 568 then directs the Calculator application to cause the keyboard to be redisplayed on the display 20.

If, at block 566, the Calculator application detects selection of the Add To icon 592, the process proceeds to block 570. Block 570 directs the Calculator application to add connecting text and the second number to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard 104 to be redisplayed. In various embodiments, the connecting text may correspond to the calculator keys which were selected by the user. In this embodiment, the connecting text may be “×2=” and thus, where the second number is “2600” and the input data was originally “The structure weighs 1300 kg”, block 570 may direct the Calculator application to amend the input data (e.g. as stored in the location 38 of the variable memory 16) to include the text “The structure weighs 1300×2=2600 kg”.

If at block 566, the Calculator application detects selection of the Clip icon 594, the process proceeds to block 572. Block 572 directs the Calculator application to store the second number in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 572 then directs the Calculator application to cause the keyboard to be redisplayed. However in other embodiments, block 572 may direct the Calculator application to retain control of the display such that the user can copy and paste multiple numbers without redisplaying the keyboard. In various embodiments, the user may redisplay the keyboard at any time during execution of the Calculator application by selecting a close secondary application icon, such as for example an “X” at a top right corner of the portion of the display 20 displayed by the Calculator application (not shown).

If at block 566, the Calculator application detects selection of the Pin icon 596, the process proceeds to block 574 which directs the Calculator application to generate state information defining a state of the Calculator application and store the state information in the memory (e.g. in the location 46). In various embodiments, the state information stored in the variable memory 16 may include a display identifier for identifying what the secondary application was displaying at the time that the Pin icon 596 was selected. In this embodiment, the state information may include the second number. The state information stored in the memory may also include a secondary application identifier (i.e. a Calculator application identifier)

Block 574 directs the Calculator application to display the keyboard 104 and to direct the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Additional blocks stored in block 32 of the program memory 14 then direct the keyboard application manager to detect selection of the resume state icon and upon detecting selection of the resume state icon, the additional blocks direct the keyboard application manager reactivate or reinvoke the Calculator application. The Calculator application is then directed to read the state information stored in the memory (e.g. in the location 46), and using the state information, reactivate or reinvoke the Calculator application, proceeding back to block 564 to display the second number as it was displayed on the display 20 when the Pin icon 596 was selected.

If at block 561 it is determined that the input data includes a formula, the Calculator application is directed to block 563. In various embodiments, the input data may include a formula such as “1300×2=” and thus block 561 would direct the Calculator Application to proceed to block 563.

Block 563 directs the Calculator application to generate a second number based on the formula identified in block 561 and display the second number in the calculator box 364. For example, where the formula is “1300*2=”, the Calculator application would generate the second number to be 2600. The process may then proceed to block 566 and continue as described above.

Calendar

In various embodiments, the plurality of patterns detectable by the keyboard application manager include Appointment patterns for identifying appointments and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the Appointment patterns to determine whether the input data falls within an Appointment category. In such embodiments block 202 may apply the category test to the entirety of the input data to determine whether the input data includes text which indicates that the user is referring to an appointment. In some variations, for example, the Appointment patterns include appointment related text, such as for example: “meet”, “meeting”, “get together”, “lunch”, “dinner”, or some other appointment related input pattern. In various embodiments the Appointment patterns also include time related text such as for example, the following: “November”, “December”, “Monday”, “noon”, or some other appointment time-related input pattern. In various embodiments the keyboard application manager does not determine that the input data falls within the Appointment category until the keyboard application manager determines that the input data includes one of the appointment related text and one of the time related text and thus includes one of the appointment patterns. In the embodiment shown in FIG. 31 where for illustration purposes the input data includes the words “meeting” and “November”, block 202 may direct the keyboard application manager to determine that the input data falls within the Appointment category.

Various secondary applications may be associated with the Appointment category. In some variations, for example, a Calendar application may be provided as a form of secondary application for finding appointments related to input data received by the user and may be associated with the Appointment category. The Calendar application serves as a secondary application that is in cooperative communication with the keyboard application manager. In various embodiments, the Calendar application may be stored in block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Calendar application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including an Appointment category identifier may be stored in memory (e.g. in location 44 of the variable memory 16). Accordingly, block 204 may direct the keyboard application manager to display a Calendar icon 1390 on the display 20, in the status notification bar 126, as shown in FIG. 31, for user selection when the input data from the user includes an appointment pattern recognized by the keyboard application manager as falling within the Appointment category. In the embodiment shown in FIG. 31, for illustration purposes the keyboard application manager is directed to display the Calendar icon 1390 on the display 20 since the input data includes both the words “meeting” and “November”. In various embodiments, if at block 206, the keyboard application manager detects selection of the Calendar icon 1390, the keyboard application manager is directed to activate or invoke the Calendar application by invoking a flowchart 1400 as shown in FIG. 32.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1400 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1400 may be encoded in a Calendar application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1400 depicts a process effected by the Calendar application. In various embodiments, the flowchart 1400 may include generally similar processes as those involved in the flowchart 300 shown in FIG. 11.

The flowchart 1400 begins with block 1402 which directs the Calendar application to find one or more appointments (if any are available) associated with the input data and to display the one or more appointments disclosed (or a subset of the results found if a plurality of matching appointments are found) for user selection. In various embodiments, appointments may be stored in memory locally (e.g. in location 68 of the variable memory 16) or remotely accessible via a server or remote network device. In various embodiments, the Calendar application may invoke a calendar-based device application (a “Calendar Device application”) that provides additional or more robust calendar functionality to find the one or more appointments. Examples of such a calendar-based device application include the calendar applications available on Android™, the calendar applications available on iOS™, the Google™ Calendar application available online, the Outlook™ application, or another calendar application operable locally on the personal computing device or remotely via the personal computing device.

Each appointment includes appointment-related information. For example, the appointments may include an appointment time and appointment details. In the embodiment shown in FIG. 31, where the input data for illustration purposes includes the words “meeting in November”, identification of the time-related text portion of the input data (e.g. “meeting” and “November”, “November” or “meeting in November”), block 1402 may direct the Calendar application to find and display at least one appointment from memory having an appointment time corresponding to the month of November.

Block 1403 directs the Calendar application to detect user selection of one of the displayed appointments.

Block 1404 directs the Calendar application to display at least one of the appointment information fields of the selected appointment on the display 20, for selection by the user. In the embodiment shown, block 1404 also directs the Calendar application to display a Back icon, a Done icon, a Clip icon, and a Pin icon on the display 20 for user selection.

Block 1405 directs the Calendar application to determine whether the Back icon has been selected by the user, and if the Back icon has been selected the Calendar application is directed to return to block 1402 to redisplay the list of appointments on the display 20.

Block 1406 then directs the Calendar application to detect selection of at least one of the appointment information fields.

Block 1408 directs the Calendar application to detect selection of one of the Done, Clip and Pin icons. If at block 1408, the Calendar application detects selection of the Done icon, the process proceeds to block 1410.

Block 1410 directs the Calendar application to add the selected at least one of the appointment fields to the input data stored in memory (e.g. in location 38 of the variable memory 16) and cause the keyboard to be redisplayed.

In various embodiments block 1410 may also direct the Calendar application to include connecting text with the selected appointment information fields and add the connecting text and the selected appointment information fields to the input data.

If at block 1408, the Calendar application detects selection of the Clip icon, the process proceeds to block 1412. Block 1412 directs the Calendar application to store the selected at least one of the appointment fields in memory (e.g. in location 39 for storing clipboard copied data) for later insertion into the input data or another editable field, document or file. In various embodiments, block 1412 may direct the Calendar application to cause the keyboard to be redisplayed. However in other embodiments, block 1410 may direct the Calendar application to continue to display the contact information fields, generally similar to as described above having regard to block 312 shown in FIG. 11.

If at block 1408, the Calendar application detects selection of the Pin icon, the process proceeds to block 1414. Block 1414 directs the Calendar application to generate state information defining a state of the Calendar application and to store the state information in the variable memory 16 (e.g. in the location 46) for further use. Block 1414 also directs the Calendar application to cause the keyboard to be redisplayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

In various embodiments, a user may select one of the appointment fields using an alternative selection method, such as, for example, by double clicking on or gesturing to the appointment field or by selecting a button or selectable region of the display associated with making the appointment field available for editing. If a user selects one of the appointment fields using the alternative selection method, the Calendar application may launch a calendar-based device application (e.g. the Calendar Device application referred to earlier above) to open and edit the selected one of the appointment fields. In launching the Calendar Device application, the Calendar application may send the Calendar Device application information, such as an identifier associated with the selected one of the appointment fields.

Task List/Personal Management

In various embodiments, the plurality of patterns detectable by the keyboard application manager include Task List patterns for identifying input data associated with task lists and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the Task List patterns to determine whether the input data falls within a Task List category. In such embodiments block 202 may direct the keyboard application manager to determine whether the input data includes one of the Task List patterns. In various embodiments, the Task List patterns may include the following text, for example: “grocery”, “groceries”, “list”, “store”, “milk”, or some other task-related input pattern.

Various secondary applications may be associated with the Task List category. In some variations, for example, a Task List application may be provided as a form of secondary application for finding and displaying tasks which may relate to the input data received from the user and may be associated with the Task List category. In various embodiments, the Task List application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Task List application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Task List category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, block 204 as shown in FIG. 5 may direct the keyboard application manager to display a Task List icon 1440 on the display 20, as shown in FIG. 33, for user selection when the input data from the user includes one of the Task List patterns and thus falls within the Task List category. In the embodiment shown in FIG. 33, the keyboard application manager is directed at block 204 to display the Task List icon 1440 on the display 20 since the input data includes one of Task list patterns, (i.e. “groceries”). If at block 206, the keyboard application manager detects selection of the Task List icon 1440, the keyboard application manager is directed to activate or invoke the Task List application by invoking a flowchart 1450 as shown in FIG. 34. In various embodiments, the flowchart 1450 may include generally similar processes as those involved in the flowchart 300 shown in FIG. 11.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1450 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1450 may be encoded in a Task List application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1450 depicts a process effected by the Task List application.

The flowchart 1450 begins with block 1452 which directs the Task List application to find and display a list of tasks for user selection. In various embodiments the Task List application may find and display only tasks related to the input data. For example, for illustration purposes in the embodiment shown in FIG. 33, where the input data includes the word “groceries”, the Task List application may find and display only grocery related tasks, such as a shopping list. In various embodiments, tasks may be stored in a server in communication with the personal computing device 10 via a network such as the one or more networks 27 shown in FIG. 18, for example. In various embodiments, the user may need to login to an account on the server in order to access the tasks. Some exemplary tasks may be “Buy groceries”, “Return library books”, or “order stationery” for example. Block 1453 directs the Task List application to detect user selection of one of the displayed tasks.

Block 1454 directs the Task List application to display at least one task information field related to the selected task on the display 20, for selection by the user. Some exemplary task information fields may be a task name, a date, a time, or a type of task. Thus, for example, the task information fields of a particular task may be “Return library books”, “February 1”, “1:00 pm”, and “Work” as the task name, date, time, and type of task respectively. In various embodiments, the task information fields of a particular task may include a list of items that are on a grocery list task, for example. Block 1454 also directs the Task List application to display a Back icon, a Done icon, a Clip icon, and a Pin icon on the display 20 for user selection.

Block 1455 directs the Task List application to determine whether the Back icon has been selected by the user, and if the Back icon has been selected the Task List application is directed to return to block 1452 to redisplay the list of tasks on the display 20.

Block 1456 then directs the Task List application to detect selection of at least one of the task information fields.

Block 1458 directs the Task List application to detect selection of one of the Done, Clip and Pin icons. If at block 1458, the Task List application detects selection of the Done icon, the process proceeds to block 1460.

Block 1460 directs the Task List application to add the selected at least one of the task information fields to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. In various embodiments block 1460 may also direct the Task List application to include connecting text with the selected task information fields and add the connecting text and the selected task information fields to the input data.

If at block 1458, the Task List application detects selection of the Clip icon, the process proceeds to block 1462. Block 1462 directs the Task List application to store the selected at least one of the task fields in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1457 may direct the Task List application to cause the keyboard to be redisplayed. However in other embodiments, block 1457 may direct the Task List application to continue to display the task information fields, generally similar to as described above having regard to block 312 shown in FIG. 11.

If at block 1458, the Task List application detects selection of the Pin icon, the process proceeds to block 1464. Block 1464 directs the Task List application to generate state information defining a state of the Task List application and store the state information in memory (e.g. in the location 46 of the variable memory 16). Block 1464 also directs the Task List application to cause the keyboard to be redisplayed and cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Music List

In various embodiments, the plurality of patterns detectable by the keyboard application manager include Music patterns for identifying input data associated with Music Lists and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the Music patterns to determine whether the input data falls within a Music category. In such embodiments block 202 may direct the keyboard application manager to determine whether the input data includes one of the Music patterns. In various embodiments, the Music patterns may include, for example, the following text: “song”, “band”, “album”, “music”, “hear”, or some other music-related input pattern.

Various secondary applications may be associated with the Music category. In some variations, for example, a Music List application may be provided as a form of secondary application for finding and displaying music related to the input data received from the user and may be associated with the Music category. In various embodiments, the Music List application may be defined in the block 34 of the program memory 14. In such embodiments, a Music List application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Music category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, block 204 shown in FIG. 5 may direct the keyboard application manager to display a Music List icon 1480 on the display 20, as shown in FIG. 35, for user selection when the input data from the user includes a Music pattern. In the embodiment shown in FIG. 35, the keyboard application manager is directed to display the Music List icon 1480 on the display 20 since the input data includes the text, “song”. In various embodiments, if at block 206, the keyboard application manager detects selection of the Music List icon 1480, the keyboard application manager is directed to activate or invoke the Music List application by invoking a flowchart 1490 as shown in FIG. 36.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1490 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1490 may be encoded in a Music List application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1490 depicts a process effected by the Music List application. In various embodiments, the flowchart 1490 may include generally similar processes as those involved in the flowchart 300 shown in FIG. 11.

The flowchart 1490 begins with block 1492 which directs the Music List application to find and display a list of songs for user selection. In various embodiments the Music List application may find and display only songs related to the input data. For example, if the input data included the word “country”, the Music List application may find and display only country songs. In various embodiments, the songs are stored in memory (e.g. in the location 47 of the variable memory 16). In various embodiments, the songs may be stored on a server in communication with the personal computing device 10 through a network, such as the one or more networks 27 shown in FIG. 18, for example. In various embodiments, the user may need to login to an account in order to access the songs. In various embodiments, the songs displayed at block 1492 are songs that have been most recently listened to, downloaded or accessed by the user. In various embodiments, the block 1492 may direct the Music List application to display a list of other music such as, for example, albums or artists instead of the list of songs.

Block 1493 directs the Music List application to detect user selection of one of the displayed songs.

Block 1494 directs the Music List application to display at least one song information field related to the selected song on the display 20, for selection by the user. Some exemplary song information fields may be a song title, album name, artist name, recording date, or genre of the song. Block 1494 also directs the Music List application to display a Back icon, a Done icon, a Clip icon, and a Pin icon on the display 20 for user selection.

Block 1495 directs the Music List application to determine whether the Back icon has been selected by the user, and if the Back icon has been selected the Music List application is directed to return to block 1492 to redisplay the list of songs on the display 20.

Block 1496 then directs the Music List application to detect selection of at least one of the song information fields.

Block 1498 directs the Music List application to detect selection of one of the Done, Clip and Pin icons. If at block 1498, the Music List application detects selection of the Done icon, the process proceeds to block 1500.

Block 1500 directs the Music List application to add the selected at least one of the song information fields to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. In various embodiments block 1500 may also direct the Music List application to include connecting text with the selected song information fields and add the connecting text and the selected song information fields to the input data.

If at block 1498, the Music List application detects selection of the Clip icon, the process proceeds to block 1502. Block 1502 directs the Music List application to store the selected at least one of the song information fields in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1498 directs the Music List application to cause the keyboard to be redisplayed. However in other embodiments, block 1498 may direct the Music List application to continue to display the song information fields, generally similar to as described above having regard to block 312 shown in FIG. 11.

If at block 1498, the Music List application detects selection of the Pin icon, the process proceeds to block 1504. Block 1504 directs the Music List application to generate state information defining a state of the Music List application and store the state information in memory (e.g. in the location 46 of the variable memory 16). Block 1504 also directs the Music List application to cause the keyboard to be redisplayed and cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Advertising Application

In various embodiments, the plurality of patterns detectable by the keyboard application manager include Advertisement patterns for identifying text that corresponds to a particular product to be advertised and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the Advertisement patterns to determine whether the input data falls within an Advertisement category.

In certain embodiments, the Advertisement category may be a Vehicle Sale category and block 202 may direct the keyboard application manager to determine whether the input data includes text that corresponds to vehicles, such as for example: “Chevrolet™”, “Ford™”, “Toyota™”, “Honda™”, “new car”, or “new truck”, etc to determine whether the input data falls within a Vehicle Sale category.

Various secondary applications may be associated with certain Advertisement categories. In some variations, for example, a Vehicle Advertisement application may be provided as a form of secondary application for finding and displaying vehicle advertisements related to the input data received from the user and may be associated with the Vehicle Sale category. In such embodiments, the Vehicle Advertisement application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Vehicle Advertisement application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including an Vehicle category identifier may be stored in the variable memory 16 (e.g. in the location 44). Accordingly, block 204 may direct the keyboard application manager to display a Vehicle Advertisement icon 1100 on the display 20 for user selection, as shown in FIG. 37, when the input data from the user includes a text that corresponds to vehicles. In the embodiment shown in FIG. 37, the keyboard application manager is directed to display the Vehicle Advertisement icon 1100 on the display 20 because the input data includes text corresponding to vehicles (i.e. “new car”).

In various embodiments, an Advertisement icon such as the Vehicle Advertisement icon 1100 need not be displayed in the status notification bar 126. In various embodiments, the Advertisement icon may be displayed above, below, within, above, or to the side of the keyboard 104, for example. In some embodiments the Advertisement icon may be displayed below the status notification bar 126. In some embodiments, the Advertisement icon may not be selectable by the user, and acts merely as an advertisement. In various embodiments the Advertisement icon may be a banner advertisement.

In various embodiments, if at block 206, the keyboard application manager detects selection of an Advertisement icon such as the Vehicle advertisement icon 1100, the keyboard application manager is directed to invoke a block 1110, as shown in FIG. 38.

The block 1110 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the block 1110 may be encoded in an Advertisement application block of codes within the block of codes 34. Thus, the block 1110 depicts a process effected by the Advertisement application.

Block 1110 directs the Advertisement application to activate or invoke a device application associated with the Advertisement application. In one embodiment, block 1110 directs the Advertisement application to invoke a web browser application and to open a website associated with the Advertisement application on the web browser application. For example, in the embodiment described above with regard to FIGS. 37 and 38, the Vehicle Advertisement application may be directed to open a website associated with “Mark's Car dealership”.

One of ordinary skill in the art would understand that various advertisement applications associated with various patterns in the input data may be similarly implemented.

Recently Used Applications

In various embodiments, the plurality of patterns detectable by the keyboard application manager may include a recently used secondary application identifier and applying the category test may involve determining whether the input data from the user (e.g. the input data stored in location 38 of the variable memory 16) includes the recently used secondary application identifier to determine whether the input data falls within a Recently Used Application category. A list of identifiers corresponding to recently used secondary applications may be stored, for example in location 48 of the variable memory 16 as shown in FIG. 18. In various embodiments, block 202 shown in FIG. 5 may thus direct the keyboard application manager to determine whether the input data includes a secondary application identifier corresponding to a secondary application identifier stored in location 48 of the variable memory 16 to determine whether the input data falls within a particular Recently Used Application category.

In various embodiments, for example, where the Contact Manager identifier 242, as shown in FIG. 6, comprises the text, “Contact Manager”, and the Contact Manager identifier 242 is stored in memory as a recently used application (e.g. in the location 48), block 202 may direct the keyboard application manager to determine whether the input data includes the text, “Contact Manager” to determine whether the input data falls within a Recently Used Contact Manager category. As shown in FIG. 6, the Contact Manager application data structure includes a Recently Used Contact Manager category identifier 254 and thus, the keyboard application manager may be directed to display the Contact Manager icon on the display 20 if the keyboard application manager determines that the input data stored in memory (e.g. in the location 38 of the variable memory 16) includes the text, “Contact Manager” and thus falls within the Recently Used Contact Manager category. Other well known symbolic mechanisms may be used for tracking which applications have been recently used including, for example, a queue.

In various embodiments, there is provided a Recently Installed Application Category similar to the Recently Used Application category except that Recently Installed Application identifiers rather than the Recently Used Application identifiers are stored in the memory, such as at the location 65 shown in FIG. 18, and compared to the input data.

In various embodiments, there is provided a Relevant Application Category similar to the Recently Used Application category except that Relevant Application identifiers rather than the Recently Used Application identifiers are stored in memory and compared to the input data. Relevancy of secondary applications may be based on relevancy criteria using methods known to persons skilled in the art for determining whether secondary applications are relevant based on their relevancy to the input data.

Persistent Applications

In various embodiments, one or more secondary applications act as persistent applications that may be accessed by the user at any time and are associated with icons which are persistently displayed on the display 20 or are otherwise persistently accessible to the user (e.g. via a pop-up display, window or notification bar). In various embodiments, the persistent applications may not be associated with any category monitored by the keyboard application manager and instead their icons may be persistently shown by the keyboard application manager, without determining whether the icons are stored in association with a category within which the input data falls.

In various other embodiments, a Persistent category may be provided which is assigned as being active or always determined to be fulfilled. Accordingly, secondary applications associated with the Persistent category are configured to act as persistent applications and may always have an associated icon displayed on the display 20 or which is otherwise accessible to the user. In various embodiments, the user may control which of the secondary applications are associated with the Persistent category.

Search Applications

In various embodiments, a Search application may be provided as a form of secondary application for searching for information and may be associated with the Persistent category. In various embodiments, the Search application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Search application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Persistent category identifier, may be stored in the variable memory 16 (e.g. in the location 44). Accordingly, block 204 shown in FIG. 5 may direct the keyboard application manager to, for example, display a Search icon 610 on the display 20 for user selection, as shown in FIG. 39, whenever the input data is found to fall into the Persistent category (i.e., optionally at all times). In various embodiments, if at block 206, the keyboard application manager detects selection of the Search icon 610, the keyboard application manager is directed to activate or invoke the Search application (e.g. by invoking causing a search to be executed as illustrated by flowchart 620 in FIG. 40).

As described for the flowchart 300 shown in FIG. 11, the flowchart 620 may be encoded in a different block of codes from the block of codes 32. For example, the flowchart 620 may be encoded in a Search application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 620 depicts a process effected by the Search application once activated or invoked.

The flowchart 620 begins at block 622 which directs the Search application to cause a search to be executed. In various embodiments, block 622 directs the Search application to invoke a device application to execute a search. The device application may be a web browser application or a device search application and block 622 may direct the Search application to cause the device application to search for text included in the input data. In the embodiment shown in FIG. 39, where for illustration purposes the input data includes the text, “Leaning Tower of Pisa”, block 622 may direct the Search application to invoke a web browser application to search for “Leaning Tower of Pisa”, such as by a Google™ web search site (e.g. www.google.com). In various embodiments, other search websites or search applications may be used, such as a news website or news application, or a website or application associated with Twitter™, a social media website such as Facebook™, or Yellowpages™, for example, to search for the text included in the input data.

In various embodiments, the web site or search application may use location information to provide yet more search results. For example, location information may be retrieved via the GPS receiver and transmitter 21, the NFC receiver and transmitter 23, the I/O interface 18 as shown in FIG. 18, and stored in memory (e.g. in the location 52 of the variable memory 16). In some variations, for example, the GPS receiver and transmitter 21 may determine the location information using GPS information, the NFC receiver and transmitter 23 may determine the location information using TecTiles™, and the I/O interface 18 may determine the location information by analyzing connection data such as a wireless Service Set Identifier (“SSID”). In some embodiments, the I/O interface 18 may also or alternatively determine the location information using Wi-Fi™ triangulation or mobile phone tower triangulation. In various embodiments, the personal computing device 10 may include an altimeter and at least a portion of the location information may be retrieved via the altimeter. In various embodiments, the personal computing device 10 may include a camera which has taken and stored an image of a portion of the environment surrounding or proximate to the personal computing device 10. The location information may be retrieved based on image identification or point of interest processing based on the image of the environment. In other embodiments, other equivalent forms of location determination may be used to determine the location information.

In various embodiments, the invoked device application may display the results of the search on the display 20, as shown in FIG. 41 and the user may interact with the invoked device application as they normally would.

In various embodiments, the device application invoked at block 622 may be associated with advertising. For example, where block 622 invokes a web browser, the web browser may be directed to a website associated with an advertising company (e.g. www.groupon.com for Groupon™). In such embodiments, the device application invoked at block 622 may find and display advertisements or deals based on location information of the personal computing device 10, a time of day, or the input data received from the user (e.g. stored in the location 38 of the variable memory 16), for example. In various embodiments, the device application invoked at block 622 may display a Quick Response (“QR”) code on the display 20, the QR code being associated with a particular advertisement or deal.

In various embodiments, block 622 directs the Search application to execute a search as described above and display results of the search on the display 20, optionally without using a device application. In such embodiments, the Search application may act generally similarly to the search device applications described above.

Location-Related Application

In various embodiments, a Location Related application may be provided as one form of secondary application for retrieving and processing location information may be associated with the Persistent category. In various embodiments, the Location Related application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Location Related application data structure having a similar format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Persistent category identifier, may be stored in the variable memory 16 (e.g. in the location 44). Accordingly, block 204 shown in FIG. 5 may direct the keyboard application manager to display a Location Related icon 1630 on the display 20 for user selection, as shown in FIG. 39 optionally at all times. In various embodiments, if at block 206, the keyboard application manager detects selection of the Location Related icon 1630, the keyboard application manager is directed to activate or invoke the Location Related application by invoking a flowchart 1640 as shown in FIG. 42.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1640 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1640 may be encoded in a Location Related application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1640 depicts a process executed by the Location Related application.

The flowchart 1640 begins at block 1642 which directs the Location Related application to retrieve location information. The location information may be retrieved as described above earlier in this specification. In various embodiments, the location information may include a latitude and longitude of the personal computing device 10, for example. In various embodiments, the location information may also or alternatively include a street address, an altitude, or an SSID, for example,

Block 1644 then directs the Location Related application to process the location information. In various embodiments, block 1644 directs the Location Related application to produce representations of the location information, based on the location information. Where the location information includes a latitude and longitude, block 1644 may direct the Location Related application to determine a street address associated with the latitude and longitude. In various embodiments, block 1644 may direct the Location Related application to invoke a device application, such as a mapping application in communication with a mapping database over a network, such as the Internet, for example, and/or query the OS running on the personal computing device 10 in order to determine the street address. The determined street address acts as a representation of the location information. In various embodiments, the representation of the location information may include a city or country identification or any other location information associated with a location of the user.

In various embodiments, block 1644 may also direct the Located Related application to retrieve a map image representation of the location information. In various embodiments, block 1644 may direct the Location Related application to invoke a device application, such as a mapping application in communication with a mapping database over a network, such as the Internet, for example, and/or query the operating system running on the personal computing device 10 in order to retrieve the map image representation of the location information.

Block 1646 then directs the Location Related application to display the representations of the location information on the display 20. In the embodiment shown in FIG. 43, the location information has been processed at block 1644 to produce a street address representation 1660 and a map image representation 1662 of the location information and block 1646 directs the Location Related application to display these representations on the display 20 at 1660 and 1662 respectively. In the embodiment shown in FIG. 43, the text “Your location is:” is also displayed on the display 20 above the representations 1660 and 1662. Block 1646 directs the Location Related application to display a Done icon 1664, a Clip icon 1666, and a Share icon 1668 on the display 20.

Block 1648 directs the Location Related application to detect selection of at least one of the representations of location information. For various embodiments such as the one illustrated in FIG. 43, block 1648 directs the Location Related application to detect selection of at least one of the street address representation 1660 and the map image representation 1662.

Block 1650 directs the Location Related application to detect selection of one of the Done, Clip, and Share icons 1664, 1666, and 1668. If at block 1650, the Location Related application detects selection of the Done icon 1664, the process proceeds to block 1652.

Block 1652 directs the Location Related application to add the selected at least one representation to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. For example, where the street address representation 1660 has been selected by the user, block 1652 directs the Location Related application to add the street address representation 1660 to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and causes the keyboard to be redisplayed. As with all secondary applications, in various embodiments, the Location Related application may cause the representation of the location information to be added to the input data stored in memory by amending the input data stored in the location 38 of the variable memory 16 directly or by sending the representation of the location information to the keyboard application manager, for example.

If at block 1650, the Location Related application detects selection of the Clip icon 1666, the process proceeds to block 1654. Block 1654 directs the Location Related application to store the selected at least one representation in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1654 directs the Location Related application to cause the keyboard to be redisplayed. However in other embodiments, block 1654 may direct the Location Related application to continue to display the representations 1660 and 1662, generally similar to as described above having regard to block 312 shown in FIG. 11.

If at block 1650, the Location Related application detects selection of the Share icon 1668, the process proceeds to block 1656. Block 1656 directs the Location Related application to cause the selected at least one representation to be shared. In various embodiments, for example, block 1656 may direct the Location Related application to invoke a device application which may be an email application or a social networking device application such as a version or adaptation of a web browser, a Facebook™ application, a Twitter™ application, or a Google Plus™ application and cause the device application to post the selected at least one representation to a social networking platform (e.g. Facebook™, Twitter™, or Google Plus™).

In alternative embodiments, the Location Related application may not be a persistent application. In some variations, for example, the Location Related application may be associated with a Location Information Available category that is triggered when location information is available for the personal computing device 10. Block 202 may direct the keyboard application manager to determine whether the input data (e.g. as stored in the location 52 of the variable memory 16) includes valid location information to determine whether the input data falls within the Location Information Available category. Location information may be retrieved periodically, as described above. In various embodiments, the location information may include a flag that indicates whether the location information is valid. Thus, in various embodiments, the keyboard application manager determines at block 202 whether the input data (stored in the location 52, for example) includes a flag indicating that the location information is valid to determine whether the input data falls within the Location Information Available category.

In various embodiments, the Location Related application may be associated with a Location Related Pattern category. In such embodiments, the plurality of patterns detectable by the keyboard application manager may include Location Related patterns for identifying input data associated with a user location and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the Location Related patterns to determine whether the input data falls within the Location Related Pattern category. In such embodiments block 202 may direct the keyboard application manager to determine whether the input data includes one of the Location Related patterns. By way of example only, the Location Related patterns may include any or all of the following text: “I am at”, “I am lost”, “I am almost there”, “I am near”, “I am leaving”, “my coords are”, or some other location-related input pattern.

Application Suggestion

In various embodiments, an Application Suggestion application may be provided as a form of secondary application for finding and displaying applications that the user may wish to invoke. The Application Suggestion application may be associated with the Persistent category. The Application Suggestion application may be defined in the block 34 of the program memory 14 as shown in FIG. 18. In such embodiments, an Application Suggestion application data structure including the Persistent category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, block 204 shown in FIG. 5 may direct the keyboard application manager to display an Application Suggestion icon 1377 as shown in FIG. 44 on the display 20 for user selection when the keyboard application determines that the input data falls within the Persistent category (i.e. optionally at all times). If at block 206, the keyboard application manager detects selection of the Application Suggestion icon 1377, the keyboard application manager may be directed to activate or invoke a flowchart 1360 as shown in FIG. 45.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1360 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1360 may be encoded in an Application Suggestion application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1360 depicts a process effected by the Application Suggestion application.

The flowchart 1360 begins with block 1362 which directs the Application Suggestion application to determine at least one preferred secondary application and display at least one of the preferred secondary applications for user selection. In various embodiments, the preferred secondary applications may be applications which are already installed on the personal computing device 10 or applications which have not been installed on the personal computing device. In various embodiments, the Application Suggestion application may determine whether a particular secondary application is a preferred application by comparing information associated with the particular secondary application with contextual information regarding the personal computing device 10 or the input data. In various embodiments, the information associated with a particular secondary application may be stored in memory.

In various embodiments, the information associated with the secondary application may include a frequency with which the application is used, a time of day when the application is usually used, a location where the application is used, a user selected preference for the application, a keyword associated with the application, social networking information associated with the application (i.e. whether social networking “friends” have indicated a preference for the application), or review information associated with the application. In various embodiments, the above information for a particular application may be compared with other secondary applications' frequency of use, a current time of day, location information of the personal computing device 10, other secondary applications' selected preferences, input data received from the user (e.g. stored in the location 38 of the variable memory 16), other secondary applications' social networking information, or other secondary applications' review information in order to determine whether the particular application is a preferred application.

In various embodiments, block 1364 directs the Application Suggestion application to detect selection of one of the preferred applications, and upon selection, invoke the application or, in some embodiments, if the selected application has not been installed on the personal computing device 10, cause the selected application to be installed on the personal computing device 10.

Context Based

While in the some of the foregoing embodiments, block 202 shown in FIG. 5 has been described as directing the keyboard application manager to apply category tests to input data received via the keyboard program and stored in the location 38, block 202 may also direct the keyboard application manager to apply category tests to input data read from other locations of the variable memory 16. For example, referring to FIG. 18, in various embodiments, input data may be read from the locations 40, 41, 50, and 52 of the variable memory 16, for example, or from a different memory device altogether, including a remote device accessible via a network.

In various embodiments, input data may be generated by the keyboard application manager based on selection of a data input box displayed by a text entry device application and the input data may include a context indicator for indicating the context of data expected to be input into the selected data input box. In various embodiments, the input data may be stored in the variable memory 16 (e.g. in the location 41).

Referring now to FIG. 46, a flowchart for directing the personal computing device 10 shown in FIG. 18 to perform context generating functions in accordance with various embodiments is shown generally at 150. The flowchart 150 may be encoded in the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions or it may be encoded in another block of codes such as the block of codes 36 for directing the personal computing device 10 to effect device application functions, for example. Thus the flowchart 150 may depict a process effected by the keyboard application manager, or by a text entry device application such as a web browser application, or by both.

The flowchart 150 begins with block 152 which directs a text entry application to cause the display 20 to display a plurality of data input boxes. In various embodiments, the text entry application may be any text entry application that accepts form-based input such as, for example, a web browser. In the embodiment shown in FIG. 47, the data input boxes include a first name data input box 154, a last name data input box 156, an e-mail data input box 158, an address data input box 160, and an image data input box 162.

Block 164 directs the keyboard application manager to detect selection of one of the data input boxes 154, 156, 158, 160, or 162.

Block 166 directs the keyboard application manager to generate a context indicator corresponding to the selected one of the data input boxes 154, 156, 158, 160, or 162 and to store the generated context indicator as input data in memory (e.g. in the location 41 of the variable memory 16).

In various embodiments, if the keyboard application manager detects selection of the first name data input box 154, then block 166 directs the keyboard application manager to generate a first name context indicator that indicates that input data to be entered in the selected box should be first name data and block 166 directs the keyboard application manager to store the first name context indicator in location 41 of the variable memory 16. If the keyboard application manager detects selection of the last name data input box 156 then block 166 directs the keyboard application manager to generate a last name context indicator indicating that input data to be entered in the selected box expects to receive should be last name data and block 166 directs the keyboard application manager to store the last name context indicator in location 41 of the variable memory 16. If the keyboard application manager detects selection of the e-mail data input box 158 then block 166 directs the keyboard application manager to generate an email context indicator indicating that input data to be entered in the selected box expects to receive should be email data and block 166 directs the keyboard application manager to store the email context indicator in location 41 of the variable memory 16. If the keyboard application manager detects selection of the address data input box 160 then block 166 directs the keyboard application manager to generate an address context indicator indicating that input data to be entered in the selected box expects to receive should be address data and block 166 directs the keyboard application manager to store the address context indicator in location 41 of the variable memory 16. If the keyboard application manager detects selection of the image data input box 162 then block 166 directs the keyboard application manager to generate an image context indicator indicating that input data to be entered in the selected box expects to receive should be image data and block 166 directs the keyboard application manager to store the image context indicator in location 41 of the variable memory 16.

One of ordinary skill in the art would recognize that many other context indicators may be envisioned and used similarly to those described above. In some variations, for example, there is provided a text context indicator, indicating that the input data to be entered in the selected box will include text. In various embodiments, the first name, last name, email, and address context indicators may include the text context indicator. In various embodiments, other data input boxes such as username data input boxes and password data input boxes, for example, associated with corresponding context indicators, may also be implemented similarly. In various embodiments, attachment data input boxes (e.g. for attaching documents to emails) may be associated with a corresponding attachment context indicator.

In various embodiments, context indicators may also include contextual information such as information indicating what application is currently being executed and displayed on the display 20 (e.g. the other contextual information may indicate that a certain social media application is currently being executed).

Context Categories Associated with Certain Secondary Applications

As described above, in various embodiments, block 202 of the flowchart 200 shown in FIG. 5 may direct the keyboard application manager to apply category tests to input data stored in various locations in memory (e.g. in the location 41 of the variable memory 16). In various such embodiments, block 202 may direct the keyboard application manager to determine whether the input data includes a context indicator corresponding to a stored context indicator to determine whether the input data falls within a particular context category. Stored context indicators may be stored in memory (e.g. in the location 62 of the variable memory 16), in association with a category identifier, for example.

In various embodiments, the block 202 may direct the keyboard application manager to determine whether the input data (e.g. as stored in the location 41 of the variable memory 16) includes context indicators corresponding to one of a first name, last name, email, or address context indicator stored in the location 62 of the variable memory 16 to determine whether the input data falls within one of a First Name, Last Name, Email, or Address Context category. In the embodiment shown in FIG. 6, the Contact Manager application data structure 240 includes a First Name Context category identifier 256, a Last Name Context category identifier 258, an Email Context category identifier 260, and an Address Context category identifier 262 and thus block 204 may direct the keyboard application manager to display the Contact Manager icon 244 on the display 20 for selection if the input data (e.g. as stored in the location 41 of variable memory 16) includes a context indicator corresponding to any of a first name context indicator, a last name context indicator, an email context indicator, and an address context indicator and thus is determined to fall within any of the First Name, Last Name, Email, or Address Context categories.

If at block 206 the keyboard application manager detects selection of the Contact Manager icon after the keyboard application manager has determined that the input data falls within one of the First Name, Last Name, Email or Address Context categories described above, which act as contact information context categories, the keyboard application manager may be directed to activate or invoke the Contact Manager application by invoking the flowchart 300 as shown in FIG. 11. In various embodiments, the keyboard application manager may send the input data or the context category identifier corresponding to the context category within which the input data was found to fall to the Contact Manager application. In various embodiments, the block 302 may direct the Contact Manager application to find and display a list of contacts on the display 20, wherein each contact within the list of contacts has a contact information field corresponding to the particular context category within which the input data stored in the location 41 of the variable memory 16 was found to fall. For example, if the keyboard application manager found that the input data falls within the E-mail Context category, block 302 may direct the Contact Manager to find and display a list of contacts on the display, wherein each of the contacts in the list of contacts has a non-null email contact information field.

Further, in various embodiments, block 304 directs the Contact Manager application to include in the at least one contact information field displayed on the display 20, at least one contact information field corresponding to the particular context category within which the input data stored in the location 41 was found to fall. For example, if the keyboard application manager found that the input data falls within the E-mail Context category, block 304 may direct the Contact manager to display at least the email field of the selected contact on the display 20.

Login Management

In various embodiments, block 202 may direct the keyboard application manager to determine whether the input data (e.g. as stored in the location 41 of the variable memory 16) includes a context indicator corresponding to a user name context indicator or a password context indicator to determine whether the input data falls within a Login Management category. In the embodiment shown in FIG. 48, the user has selected a username data input box 650 displayed by a device application, and as described above in FIG. 46, block 166 or a block similar to block 166 directs the keyboard application manager to generate a username context indicator and store the username context indicator as input data (e.g. in the location 41 of the variable memory 16). In this embodiment, the keyboard application manager determines at block 202 that the input data includes a context indicator corresponding to a user name context indicator and thus falls within a Login Management category.

Various secondary applications may be associated with the Login Management category. In some variations, for example, a Login Management application may be provided as a form of secondary application for finding login candidates related to the input data and may be associated with the Login Management category. In various embodiments, the Login Management application may be defined in the block 34 of the program memory 14. In such embodiments, a Login Management application data structure having a Login Management category identifier identifying the Login Management category may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, in various embodiments, block 204 shown in FIG. 5 may direct the keyboard application manager to display a Login Management application icon 652 on the display 20 for user selection as shown in FIG. 48 when the keyboard application manager determines at block 202 that the input data falls within the Login Management category. If at block 206, the keyboard application manager detects selection of the Login Management icon, the keyboard application manager is directed to activate or invoke the Login Management application for generating user names and/or passwords by invoking a flowchart 660 as shown in FIG. 49. Of course as with all invocations of secondary applications, in various embodiments, the keyboard application manager may send the input data or a portion thereof to the Login Management application.

As described for the flowchart 300 shown in FIG. 11, the flowchart 660 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 660 may be encoded in a Login Management application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 660 depicts a process effected by the Login Management application.

The flowchart 660 begins at block 662 which directs the Login Management application to display on the display 20 a Personal Identification Number (PIN) keypad 680 as shown in FIG. 50. Block 662 also directs the Login Management application to display instructions to “Please enter your pin:” and provides a PIN box 682 for displaying entered numbers of the PIN as *'s.

Block 664 directs the Login Management application to detect PIN entry. Block 664 directs the Login Management application to move on to block 666 once the Login Management application determines that an Enter key 684 has been selected.

Block 666 directs the Login Management application to verify that the PIN that was entered at block 664 matches a PIN stored in memory (e.g. at the location 54 in the variable memory 16). In various embodiments, the PIN may be encrypted in memory and/or may be stored in memory on a device in communication with the personal computing device 10 via the one or more networks 27. If at block 666, the Login Management application determines that the PIN does not correspond with the stored PIN, the process proceeds to block 667 which directs the Login Management application to display a “PIN incorrect” message on the display 20 and then the process returns to block 662.

If at block 666, the Login Management application determines that the PIN correspond with the stored PIN, the process proceeds to block 668. Block 668 directs the Login Management application to display a list of login candidates 686, 688, and 690 along with Done and Clip icons 692 and 694 for user selection as shown in FIG. 51. The login candidates 686, 688, and 690 are displayed on the display 20 in association with respective labels 696, 698, and 700.

In various embodiments, block 668 directs the Login Management application to display login candidates that correspond to the context indicator included in the input data. Thus, in the embodiment shown, where the input data included a username context indicator, the selectable login candidates 686, 688, and 690 are chosen from usernames stored in memory or retrieved from an external device which may be in communication with the personal computing device 10 via the one or more networks 27 for example. In various embodiments, if the input data includes a password context indicator, block 668 may direct the Login Management application to display login candidates chosen from passwords.

In various embodiments, block 668 may direct the Login Management application to only display login candidates that correspond to other contextual information In some embodiments, the other contextual information may indicate a type of username expected. In some variations, for example, the device application displaying the username data input box 650 as shown in FIG. 48 is a web browser which stores a website URL identifier in memory (e.g. in the location 69), the website URL identifier being associated with a website currently being viewed. In such embodiments block 668 may direct the Login Management application to read from the memory (e.g. the location 69) the website URL identifier to determine what website is currently being viewed and display login candidates that correspond to the website URL identifier. For example, if the Login Management application determines at block 668 that the device application is displaying a website located at www.facebook.com, block 668 may direct the Login Management application to only display login candidates that correspond to www.facebook.com (i.e. usernames for Facebook™ accounts). In various other embodiments, the other contextual information may indicate what application is currently being executed and displayed on the display 20 (e.g. the other contextual information may indicate that a certain social media application such as a version of a Facebook™ application is currently being executed).

In various embodiments, block 668 may direct the Login Management application to display a list of groups or folders of login candidates. The user may select a group or folder and block 668 may direct the Login Management application to display a specific URL or website for user selection. Block 668 may then direct the Login Management application to retrieve login candidates associated with the selected URL or website and display the login candidates for user selection.

Referring back to FIG. 49, block 670 directs the Login Management application to detect selection of one of the login candidates 686, 688, and 690. In the embodiment shown in FIG. 51, the Login Management application detects selection of the login candidate 686 and thus an area surrounding the login candidate 686 is shown as shaded.

Block 672 directs the Login Management application to detect selection of one of the Done and Clip icons 692 and 694. If at block 672, the Login Management application detects selection of the Done icon 692, the process proceeds to block 674.

Block 674 directs the Login Management application to replace the input data to be input into the username data input box 650 (e.g. as stored in the location 38 of the variable memory 16) with the selected login candidate. In the embodiment shown in FIG. 51, where the selected login candidate is the login candidate 686, block 674 directs the Login Management application to cause the input data (e.g. as stored in the location 38 of the variable memory 16) to include the text “Username1” as shown in FIG. 52. Block 674 then directs the Login Management application to cause they keyboard to be redisplayed on the display 20.

If at block 672, the Login Management application detects selection of the Clip icon 694, the process proceeds to block 676. Block 676 directs the Login Management application to store the selected login candidate in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 676 may direct the Login Management application to cause the keyboard to be redisplayed. However in other embodiments, block 676 may direct the Login Management application to remain in control of the display such that the user can select and paste multiple login candidates without redisplaying the keyboard.

Image Management

In another embodiment, the block 202 may direct the keyboard application manager to determine whether input data (e.g. as stored in the location 41 of the variable memory 16) includes a context indicator corresponding to an image context indicator to determine whether the input data falls within an Image category. In various embodiments, block 202 may direct the keyboard application manager to determine whether input data (e.g. as stored in the location 41 of the variable memory 16) includes a context indicator corresponding to an attachment context indicator to determine whether the input data falls within an Image category.

In the embodiment shown in FIG. 53, a device application displays an image data input box 719 on the display 20. The image data input box 719 expects to receive image data, and thus user selection of the data input box causes block 166, or a block similar to block 166 shown in FIG. 46 to generate and store an image context indicator in memory (e.g. in the location 41 of the variable memory 16).

Various secondary applications may be associated with the Image category. In some variations, for example, an Image Management application may be provided as a form of secondary application for finding and displaying images for entry into a data input box and may be associated with the Image category. In various embodiments, the Image Management application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, an Image Management application data structure having an Image category identifier identifying the Image category may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, in various embodiments, block 204 shown in FIG. 5 may direct the keyboard application manager to display an Image Management application icon 723 on the display 20 for selection by the user, as shown in FIG. 53, when the keyboard application manager determines at block 202 that the input data falls within the Image category. If at block 206, the keyboard application manager detects selection of the Image Management application icon 723, the keyboard application manager is directed to activate or invoke the Image Management application by invoking a flowchart 720 as shown in FIG. 54.

As described for the flowchart 300 shown in FIG. 11, the flowchart 720 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 720 may be encoded in an Image Management application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 720 depicts a process effected by the Image Management application.

The flowchart 720 begins at block 722 which directs the Image Management application to read images from memory (e.g. from the location 64 of the variable memory 16), and display the images on the display 20 as thumbnails for user selection. In various embodiments, the images may be read from local memory or they may be retrieved via a network, e.g. the Internet, from a remote server (e.g. Dropbox™). In various embodiments, the images may be displayed on the display in order of date taken, with the most recent being displayed first. In the embodiment shown in FIG. 55, images 744 and 746 are displayed on the display 20. In various embodiments, the ten most recently modified images may be displayed on the display 20. Block 722 also directs the Image Management application to display a Done icon 752 and a Clip icon 754 for user selection.

Block 724 directs the Image Management application to detect selection of at least one of the images 744 and 746. In this way, the user can select which of the images that the user wishes to eventually store or use. In the embodiment shown in FIG. 55, the Image Management application detects selection of the image 744 and thus an area surrounding the image 744 is shown as shaded.

Block 726 directs the Image Management application to detect selection of one of the Done and Clip icons 752 and 754. If at block 726, the Image Management application detects selection of the Done icon 752, the process proceeds to block 728.

Block 728 directs the Image Management application to add the selected at least one of the images to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. Where the image 744 has been selected by the user, block 728 directs the Image Management application to add the image 744 to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and causes the keyboard to be redisplayed.

If at block 726, the Image Management application detects selection of the Clip icon 754, the process proceeds to block 730. Block 730 directs the Image Management application to store the selected at least one of the images in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 730 directs the Image Management application to cause the keyboard to be redisplayed. However in other embodiments, block 730 may direct the Image Management application to continue to display the images 744 and 746, generally similar to as described above having regard to block 312 shown in FIG. 11.

In various embodiments, the plurality of patterns detectable by the keyboard application manager include Image patterns for identifying input data associated with images and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) includes one of the Image patterns to determine whether the input data falls within an Image category. In such embodiments block 202 may direct the keyboard application manager to determine whether the input data includes one of the Image patterns. In various embodiments, the Image patterns may include the following text, for example: “photo”, “picture”, “image”, “camera”, or another image-related input pattern.

Text Context Indicator

In various embodiments, there is provided a Text category and input data is found to fall within the Text category whenever text is expected at the input. As with the Persistent category, in various embodiments, whether a secondary application is associated with the Text category may be user selectable.

In various embodiments, block 202 shown in FIG. 5 may direct the keyboard application manager to determine whether the input data (e.g. as stored in the location 41 of the variable memory 16) includes a context indicator corresponding to a text context indicator to determine whether the input data falls within the Text category. In the embodiment shown in FIG. 56, the input data stored in memory includes a text context indicator and accordingly block 202 determines that the input data falls within the Text category.

Various secondary applications may be associated with the Text category. In some variations, for example, a Translator application may be provided as a form of secondary application for translating text and may be associated with the Text category. In various embodiments, the Translator application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments a Translator application data structure including a Text category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, in various embodiments, block 204 shown in FIG. 5 directs the keyboard application manager to display a Translator icon 760 on the display 20 for user selection when the keyboard application determines that the input data falls within the Text category. If at block 206, the keyboard application manager detects selection of the Translator icon, the keyboard application manager may be directed to activate or invoke the Translator application by invoking a flowchart 780 as shown in FIG. 57.

As described for the flowchart 300 shown in FIG. 11, the flowchart 780 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 780 may be encoded in a Translator application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 780 depicts a process effected by the Translator application.

The flowchart 780 begins at block 782 which directs the Translator application to display the input data and a first language indicator associated with the input data on the display 20. In the embodiment shown in FIG. 58, the input data (i.e. “Awesome”) is displayed at 800 and the first language indicator (i.e. “English”) is displayed at 802.

Referring to FIGS. 57 and 58, block 784 directs the Translator application to generate and display a translation 804 of the input data and a second language indicator 806 associated with the translation 804. In various embodiments, the Translator may communicate with an external device via the one or more networks 27 to generate the translation. The second language indicator 806 indicates what language the Translator application has translated the input data into. In the embodiment shown, the second language indicator 806 indicates that the Translator application has translated the input data into French. Block 784 also directs the Translator application to display a Replace icon 808, an Add To icon 810, a Clip icon 812, and a Pin icon 814 for user selection. In various embodiments, the user may use a pull down menu displayed with the first and second language indicators 802 and 806 to change the languages associated with the first or second language indicators.

Block 786 directs the Translator application to detect selection of one of the Replace, Add To, Clip, or Pin icons 808, 810, 812, or 814. If at block 786, the Translator application detects selection of the Replace icon 808, the process proceeds to block 788.

Block 788 directs the Translator application to replace the input data stored in memory (e.g. in the location 38 of the variable memory) with the translation as generated by the Translator application. Block 788 then directs the Translator application to cause the keyboard to be redisplayed on the display 20.

If at block 786, the Translator application detects selection of the Add To icon 810, the process proceeds to block 790. Block 790 directs the Translator application to add connecting text and the translation to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. In various embodiments, the connecting text may include, for example, the text “which means” preceding the translation and may include text indicating what language the translation is in, such as, for the embodiment shown where the second language indicator 806 indicates that the translation 804 is in French, for example, the text “in French”. Accordingly, in various embodiments, adding the connecting text and translation to the input data causes the input data to include the text “Awesome which means Impressionnant in French”.

If at block 786, the Translator application detects selection of the Clip icon 812, the process proceeds to block 792. Block 792 directs the Translator application to store the translation in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 792 directs the Translator application to cause the keyboard to be redisplayed. However in other embodiments, block 792 may direct the Translator application to continue to control the display 20, such that the user may clip multiple translations without redisplaying the keyboard.

If at block 786, the Translator application detects selection of the Pin icon 814, the process proceeds to block 794 which directs the Translator application to generate and store state information in the memory (e.g. in the location 46 of the variable memory 16). Block 786 then directs the Translator application to cause the keyboard to be redisplayed on the display 20 and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Thesaurus

In various embodiments, a Thesaurus application may be provided as a form of secondary application for finding synonyms or words similar to a word included in the input data. The Thesaurus application may be associated with the Text category. In various embodiments, the Thesaurus application may be defined in the block 34 of the program memory 14. In such embodiments, a Thesaurus application data structure including the Text category identifier may be stored in the variable memory 16 (e.g. in the location 44). Accordingly, block 204 shown in FIG. 5 may direct the keyboard application manager to display a Thesaurus icon 762 on the display 20 for user selection as shown in FIG. 56 when the keyboard application determines that the input data falls within the Text category. If at block 206, the keyboard application manager detects selection of the Thesaurus icon 762, the keyboard application manager may be directed to activate or invoke a flowchart 1260 as shown in FIG. 59.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1260 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1260 may be encoded in a Thesaurus application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1260 depicts a process effected by the Thesaurus application.

The flowchart 1260 begins at block 1262 which directs the Thesaurus application to display a first word 1280 included in the input data, as shown in FIG. 60 and to generate and display words 1282, 1284 and 1286 having a similar meaning to the first word 1280 for user selection. In various embodiments, the Thesaurus application may communicate with a device via the one or more networks 27 to generate the words having similar meaning. In the embodiment shown in FIG. 60, the first word 1280 is “Awesome” and the Thesaurus application displays the words 1282, 1284 and 1286 which are “amazing”, “astonishing”, and “great” respectively. Block 1262 also directs the Thesaurus application to display a Replace icon 1288, an Add To icon 1290, a Clip icon 1292 and a Pin icon 1294 for user selection.

Block 1264 directs the Thesaurus application to detect user selection of at least one of the displayed words 1282, 1284 and 1286. In the embodiment shown in FIG. 60, the Thesaurus application detects selection of the word 1282 and thus an area surrounding the word 1282 is shown as shaded.

Block 1266 directs the Thesaurus application to detect selection of one of the Replace, Add To, Clip, or Pin icons 1288, 1290, 1292, or 1294. If at block 1266, the Thesaurus application detects selection of the Replace icon 1288, the process proceeds to block 1268.

Block 1268 directs the Thesaurus application to replace the first word included in the input data stored in memory (e.g. in the location 38 of the variable memory 16) with the selected word 1282. Block 1268 then directs the Thesaurus application to cause the keyboard to be redisplayed.

If at block 1266, the Thesaurus application detects selection of the Add To icon 1290, the process proceeds to block 1270. Block 1270 directs the Thesaurus application to add connecting text and the selected word to the first word of the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. In the embodiment shown in FIG. 60, the connecting text may be “or” and thus block 1270 may direct the Thesaurus application to amend the input data to include “Awesome or amazing”. In various embodiments, where more than one of the words 1282, 1284, and 1286 have been selected, block 1270 directs the Thesaurus application to add additional connecting text between the selected words before adding the selected words to the input data. For example, if the user selected the words 1282 and 1284 (i.e. “amazing” and “astonishing”), block 1270 may direct the Thesaurus application to add connecting text and the word 1282 and 1284 to the input data such that the input data includes, “Awesome or amazing or astonishing”.

If at block 1266, the Thesaurus application detects selection of the Clip icon 1292, the process proceeds to block 1272. Block 1272 directs the Thesaurus application to store the selected word as clipboard data in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1272 then directs the Thesaurus to cause the keyboard to be redisplayed. However in other embodiments, block 1272 may direct the Thesaurus application to continue to control the display 20 and display the words 1282, 1284 and 1286, such that the user can clip multiple words into the input data without redisplaying the keyboard, generally similar to as described above having regard to block 312 shown in FIG. 11.

If at block 1266, the Thesaurus application detects selection of the Pin icon 1294, the process proceeds to block 1274 which directs the Thesaurus application to generate and store state information in memory (e.g. in the location 46 of the variable memory 16). Block 1274 also directs the Thesaurus application to cause the keyboard to be redisplayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Dictionary

In various embodiments, a Dictionary application may be provided as a form of secondary application for finding definitions of words included in the input data. The Dictionary application may be associated with the Text category. In various embodiments, the Dictionary application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Dictionary application data structure including the Text category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, referring to FIG. 5, block 204 may direct the keyboard application manager to display a Dictionary icon 764 as shown in FIG. 56 on the display 20 for user selection when the keyboard application determines that the input data falls within the Text category. If at block 206, the keyboard application manager detects selection of the Dictionary icon 764, the keyboard application manager may be directed to activate or invoke a flowchart 1310 as shown in FIG. 61.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1310 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1310 may be encoded in a Dictionary application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1310 depicts a process effected by the Dictionary application.

The flowchart 1310 begins at block 1312 which directs the Dictionary application to display a first word 1330 from the input data (e.g. as stored in the location 38 of the variable memory 16) or received from the keyboard application manager on the display 20, as shown in FIG. 62. In various embodiments, the first word 1330 may be chosen as the most recently entered word in the input data. Block 1312 also directs the Dictionary application to generate and display definitions 1332 and 1334 of the first word 1330 for user selection. In various embodiments, the Dictionary application may communicate with an external device via the one or more networks 27 to generate the definitions. In the embodiment shown in FIG. 62, the first word 1330 is “Awesome” and the definitions 1332 and 1334 are “Extremely impressive or daunting”, and “Extremely good”, respectively. Block 1312 also directs the Dictionary application to display a Replace icon 1338, an Add To icon 1340, a Clip icon 1342, and a Pin icon 1344, for user selection.

Block 1314 directs the Dictionary application to detect user selection of at least one of the displayed definitions 1332 and 1334. In the embodiment shown in FIG. 62, the Dictionary application detects selection of the definition 1332 and thus an area surrounding the definition 1332 is shown as shaded.

Block 1316 directs the Dictionary application to detect selection of one of the Replace, Add To, Clip, or Pin icons 1338, 1340, 1342, or 1344. If at block 1316, the Dictionary application detects selection of the Replace icon 1338, the process proceeds to block 1318.

Block 1318 directs the Dictionary application to replace the first word 1330 as stored within the input data stored in the memory (e.g. in the location 38 of the variable memory 16) with the selected definition 1332. Block 1318 then directs the Dictionary application to cause the keyboard to be redisplayed on the display.

If at block 1316, the Dictionary application detects selection of the Add To icon 1340, the process proceeds to block 1320. Block 1320 directs the Dictionary application to add connecting text and the selected definition to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. In the embodiment shown, the connecting text may be “which means” and the input data may thus be amended to read, “Awesome which means extremely impressive or daunting”. In various embodiments, where more than one of the definitions 1332 and 1334 have been selected, block 1320 directs the Dictionary application to add further connecting text between the selected definitions before adding the selected definitions to the input data. For example, if the user selected the definitions 1332 and 1334, block 1320 may direct the Dictionary application to add connecting text and the definitions 1332 and 1334 to the input data such that the input data reads, “Awesome which means extremely impressive or daunting, or extremely good”.

If at block 1316, the Dictionary application detects selection of the Clip icon 1342, the process proceeds to block 1322. Block 1322 directs the Dictionary application to store the selected definition as clipboard data in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1322 then directs the Dictionary application to cause the keyboard to be redisplayed. However in other embodiments, block 1322 may direct the Dictionary application to continue to control the display 20 and display the definitions 1332 and 1334 for user selection and the user may exit the secondary application and pass control back to the keyboard program and the keyboard application manager, such as by selecting a close icon, for example, generally as described above having regard to block 312 of the flowchart 300 shown in FIG. 11.

If at block 1316, the Dictionary application detects selection of the Pin icon 1344, the process proceeds to block 1324 which directs the Dictionary application to generate and store state information in memory (e.g. in the location 46 of the variable memory 16). Block 1324 also directs the Dictionary application to cause the keyboard to be redisplayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Social Networking

In various embodiments, a Social Networking application may be provided as a form of secondary application for posting content to a social network. The Social Networking application may be associated with the Text category. In various embodiments, the Social Networking application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments a Social Networking application data structure including the Text category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Accordingly, block 204 shown in FIG. 5 may direct the keyboard application manager to display a Social Networking icon 1102 on the display 20 for user selection as shown in FIG. 56 when the keyboard application determines that the input data falls within the Text category. If at block 206, the keyboard application manager detects selection of the Social Networking icon 1102, the keyboard application manager may be directed to activate or invoke the Social Networking application by invoking a flowchart 1120 as shown in FIG. 63.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1120 may be encoded in a different block of codes from the block of codes 32 and, more particularly, the flowchart 1120 may be encoded in a Social Networking application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1120 depicts a process effected by the Social Networking application.

The flowchart 1120 begins at block 1122 which directs the Social Networking application to cause the input data to be posted to a social network. In various embodiments, block 1122 may direct the Social Networking application to invoke a device application which may be a social networking device application such as a version of a web browser, a Facebook™ application, a Twitter™ application, or a Google™ Plus application and cause the device application to post the input data (e.g. as stored in the location 38 of the variable memory 16) to a social networking platform (e.g. Facebook™, Twitter™, or Google™ Plus).

In other embodiments, block 1122 may direct the Social Networking application to post the input data to a social networking platform, without the use of a device application.

Multiple Secondary Application Icons Displayed at Once

In various embodiments, a plurality of secondary applications may be stored in association with a given category, or input data may be determined to fall within a plurality of categories and thus block 204 shown in FIG. 5 may direct the keyboard application manager to display a plurality of secondary application icons on the display 20 at the same time.

In various embodiments, if the keyboard application manager is directed by block 204 to display more than one secondary application icon, the keyboard application manager invokes flowchart 1200 as shown in FIG. 64. The flowchart 1200 may be encoded in the block of codes 34. Thus, in various embodiments, the flowchart 1200 depicts a process effected by the keyboard application manager.

The flowchart 1200 begins with block 1202 which directs the keyboard application manager to determine whether the plurality of secondary applications to be displayed are associated with a common group. If the keyboard application manager determines at block 1202 that the plurality of secondary applications to be displayed are associated with a common group, the process proceeds to block 1204. Secondary applications may be associated with groups based on their respective data structures, as stored in memory (e.g. in the location 44 of the variable memory 16). For example, referring back to FIG. 6, the Contact Manager application data structure 240 includes a contact management group ID 265 indicating that the contact manager application is associated with a contact management group.

In various embodiments, an additional contact manager application installed on the personal computing device 10 may also be associated with the contact management group. In such embodiments, where both the Contact Manager icon and the additional contact manager icon are to be displayed at block 204, the keyboard application determines at block 1202 that the Contact Manager application and the additional contact manager application are associated with a common group (i.e. the contact management group) and thus the process proceeds to block 1204.

Block 1204 directs the keyboard application manager to store in memory (e.g. in the location 66 of the variable memory 16), secondary application identifiers associated with the secondary applications which were found to be associated with the common group. In various embodiments, block 1204 directs the keyboard application manager to store identifiers for the Contact Manager application and the additional contact manager application in the location 60 of the variable memory 16, in association with a contact management group identifier.

Block 1206 then directs the keyboard application manager to display a group icon associated with the common group. In the embodiment shown in FIG. 65, the keyboard application manager displays a contact management icon 1220 which acts as a group icon and is associated with the contact management group ID.

If the keyboard application manager determines at block 1202 that the plurality of secondary applications to be displayed are not associated with a common group, the process proceeds to block 1208.

Block 1208 directs the keyboard application manager to cause each of the plurality of icons to be displayed in order according to a rank of the respective secondary applications associated with each of the plurality of icons. In various embodiments, the rank may be based on a historic frequency indicating how many times each of the icons have been selected. In such embodiments, a historic frequency may be included in each application data structure. For example, a historic frequency number 264 included in the Contact Manager data structure may indicate the number of times that the Contact Manager application has been invoked.

In such an embodiment, block 204 may direct the keyboard application manager to display icons in the status notification bar 126 on the display 20 such that icons associated with higher historic frequencies are displayed to the left of icons associated with lower historic frequencies, for example.

In other various embodiments, the rank may be based on any other way of ranking the secondary applications. For example, in various embodiments, the rank may be based on a degree with which the input data received from the user (e.g. stored in the location 38 of the variable memory 16) corresponds to particular data associated with the secondary application. In various embodiments, the rank may be based on a degree with which a context indicator acting as input data (e.g. stored in the location 44 of the variable memory 16) corresponds to a context indicator associated with the secondary application. In various embodiments, the rank may also be based on a degree with which the location information stored in memory (e.g. in the location 52 of the variable memory 16) corresponds to a location associated with the secondary application.

Referring now to FIGS. 65 and 66, in various embodiments, when the keyboard application manager detects selection of an icon associated with a group icon, such as the contact management icon 1220, at block 206 shown in FIG. 5, the keyboard application manager is directed to invoke flowchart 1240. In various embodiments, the flowchart 1240 may be encoded in the block of codes 34. Thus, in various embodiments, the flowchart 1240 depicts a process effected by the keyboard application manager.

The flowchart 1240 begins with block 1242 which directs the keyboard application manager to read from memory (e.g. in the location 66 of the variable memory 16) to determine which secondary applications are associated with the selected group icon. For the embodiment shown in FIG. 65, the Contact Manager application ID and the additional contact manager application ID were stored in the location 66 in association with the contact manager group ID. Accordingly, the keyboard application manager determines at block 1242 that the Contact Manager application and the additional contact manager application are associated with the selected contact management group icon 1220.

Block 1244 directs the keyboard application manager to display on the display 20 icons associated with the secondary applications associated with the selected group icon. In the embodiment shown in FIG. 67, block 1244 directs the keyboard application manager to display the Contact Manager icon 244 and an additional contact manager icon 1222 above the contact management group icon 1220 for selection by the user.

Block 1246 directs the keyboard application manager to detect selection of one of the displayed icons. Upon detecting selection of one of the displayed icons, the process proceeds as described above where the keyboard application manager detects selection of an icon at block 206 of FIG. 5. For example, in the embodiment shown, if the keyboard application manager detects selection of the Contact Manager icon 244 at block 1246, the keyboard application manager invokes the flowchart 300.

In various embodiments, the keyboard application may detect selection of the contact management group icon 1220 by detecting a tap on the display 20 or a click by a pointer at a position corresponding to the contact management group icon 1220 and may detect selection of the Contact Manager icon 244 by detecting a second tap on the display 20 or a second click by a pointer at a position corresponding to the Contact Manager icon 244. However in other various embodiments, the keyboard application manager may detect selection of the contact management group icon 1220 at block 204 by detecting the user holding contact with the display 20 or holding down selection with a pointer on the contact management group icon 1220. In such embodiments, the user may select a desired one of the secondary applications associated with the selected group icon by releasing contact with the display or no longer holding down selection with the pointer while pointing at the desired secondary application.

Word Selector Generating Input Data

In various embodiments, input data may be generated by a multi-select application acting as a text or data selector and stored in memory (e.g. in the location 40 of the variable memory 16). In such embodiments, block 202 may direct the keyboard application manager to apply a category test to the input data stored in the memory (e.g. in the location 40 of the variable memory 16). While a particular version of a multi-select application is described in detail below, in various embodiments, other text selecting methods may be used to select input data to store in memory which the keyboard application manager may apply category tests to in block 202.

In various embodiments, the multi-select application may select and store portions of selectable text 178 displayed on the display 20 as shown in FIG. 68, by a device application, such as a web browser application defined in the block 36 of the program memory 14.

Referring to FIGS. 68 and 69, a flowchart for directing the personal computing device 10 shown in FIG. 1 to perform multi-select functions in accordance with various embodiments is shown generally at 180. The flowchart 180 may be encoded in the block of codes 37 for directing the personal computing device 10 to effect multi-select application functions as shown in FIG. 18. Thus, in various embodiments, the flowchart 180 depicts a process effected by the multi-select application.

The flowchart 180 begins with block 182 which directs the personal computing device 10 to detect invocation of the multi-select application. In various embodiments, the personal computing device 10 may detect that the user has invoked the multi-select application by determining that the user has contacted the display 20 at a location corresponding to the selectable text 178 being displayed on the display 20 for a period of time greater than a threshold time period. In various embodiments, the threshold time period may be 3 seconds.

Next, block 184 directs the multi-select application of the personal computing device 10 to cause the display 20 to display a selector 186 having a word select icon 188, a sentence select icon 190, a paragraph select icon 192, and a select all icon 194 as shown in FIG. 68. The word select icon 188, the sentence select icon 190, the paragraph select icon 192, and the select all icon 194 act as text select icons. The selector 186 also includes a pointer 187 for pointing to a home position of the selector 186.

Block 196 directs the multi-select application of the personal computing device 10 to detect selection of one of the plurality of text select icons 188, 190, 192, or 194.

Block 198 then directs the multi-select application of the personal computing device 10 to store a portion of the selectable text 178 corresponding to the selected one of the text select icons 188, 190, 192, or 194 in memory (e.g. in the location 40 of the variable memory 16). For example, if the multi-select application detects selection of the word select icon 188, block 198 directs the multi-select application to store a word of the selectable text 178 preceding the pointer 187 of the selector 186 in memory (e.g. in the location 40 of the variable memory 16). If the multi-select application detects selection of the sentence select icon 190, block 198 directs the multi-select application to store a sentence of the selectable text 178 preceding the pointer 187 of the selector 186 in memory (e.g. in the location 40 of the variable memory 16). If the multi-select application detects selection of the paragraph select icon 192, block 198 directs the multi-select application to store a paragraph of the selectable text 178 preceding the pointer 187 of the selector 186 in memory (e.g. in the location 40 of the variable memory 16). If the multi-select application detects selection of the select all icon 194, block 198 directs the multi-select application to store all of the selectable text 178 preceding the pointer of the selector 186 in memory (e.g. in the location 40 of the variable memory 16).

The input data stored in memory (e.g. in the location 40) may be read from the location 40 by the keyboard application manager and treated in the same way that the keyboard application manager treats the input data received from the keyboard and stored in memory (e.g. stored in the location 38). Accordingly, icons discussed herein may be displayed on the status notification bar 126, based on the input data stored by the multi-select application in memory (e.g. in the location 40).

In various embodiments block 196 directs the multi-select application to detect a position of the user's pointer along the selected text select icon. In various embodiments, the multi-select application detects sliding of the user's pointer (which may include any pointing device, such as for example a finger on a touch screen) along the text select icon to detect the position of the user's pointer along the selected text select icon. In such embodiments, block 198 may direct the multi-select application to store a portion of the selectable text 178 corresponding to the selected one of the text select icons 188, 190, 192, or 194 and to the detected position of the pointer along the selected text select icon. In some variations, for example, where the multi-select application determines that the user's pointer is positioned on a left side of the word select icon 188, block 198 directs the multi-select application to store one word of the selectable text 178 preceding the pointer 187 in memory and as the user's pointer slides to the right, block 198 directs the multi-select application to store additional words of the selectable text 178 preceding the pointer 187 in memory. Thus, in various embodiments, for example, where the multi-select application determines that the user's pointer has slid from the left side to the middle of the word select icon 188, block 198 directs the multi-select application to store 3 words of the selectable text 178 preceding the pointer 187 in memory and in various embodiments, for example, where the multi-select application determines that the user's pointer has slid from the left side to the middle of the word select icon 188, block 198 directs the multi-select application to store 10 words of the selectable text 178 preceding the pointer 187 in memory. The other text select icons 190, 192, and 194 may be treated similarly.

Multi-Select Widget

In various embodiments there is provided a multi-select widget which may function generally similarly to the multi-select application described above but can be invoked by a secondary application to select text. In various embodiments, once a secondary application has been invoked, the secondary application may activate the multi-select widget by invoking a flowchart 1520 as shown in FIG. 70. In the embodiment shown in FIG. 71, the user has entered text 630 and has selected the Translation icon to invoke the flowchart 780 shown in FIG. 57 and the Translation application has invoked the multi-select widget.

The flowchart 1520 may be encoded in the block of codes 32 and, more particularly, the flowchart 1520 may be encoded in a multi-select widget block of codes within the block of codes 32. Thus, in various embodiments, the flowchart 1520 depicts a process effected by the multi-select widget.

In some embodiments, where the secondary application has not already invoked the multi-select widget, the flowchart 1520 begins with block 1522 which directs the multi-select widget to detect invocation of the multi-select widget. In various embodiments, the personal computing device 10 may detect that the user has invoked the multi-select widget by determining that the user has contacted the display 20 at a location corresponding to the text 630 for a period of time greater than a threshold time period. In various embodiments, the threshold time period may be 3 seconds. In other various embodiments, the multi-select widget may be automatically invoked by the secondary application upon invocation of the secondary application and thus block 1522 may be unnecessary.

Next, block 1524 directs the multi-select widget to cause the display 20 to display a selector 1526 having a word select icon 1528, a sentence select icon 1530, a paragraph select icon 1532, and a select all icon 1534 as shown in FIG. 71. The word select icon 1528, the sentence select icon 1530, the paragraph select icon 1532, and the select all icon 1534 act as text select icons and are treated generally similarly to the text select icons 188, 190, 192, or 194 described above and shown in FIG. 68 except that they act on the text 630 shown in FIG. 71 rather than the selectable text 178 shown in FIG. 68. The selector 1526 also includes a pointer 1527 for pointing to a home position of the selector 1526.

Block 1536 directs the multi-select widget of the personal computing device 10 to detect selection of one of the plurality of text select icons 1528, 1530, 1532, or 1534.

Block 1538 directs the multi-select widget to store a portion of the text 630 corresponding to the selected one of the text select icons 1528, 1530, 1532, or 1534 in memory (e.g. in the location 40 of the variable memory 16). For example, if the multi-select widget detects selection of the word select icon 1528, block 1538 directs the multi-select widget to store a word of the text 630 preceding the pointer 1527 of the selector 1526 in memory (e.g. in the location 40 of the variable memory 16). If the multi-select widget detects selection of the sentence select icon 1530, block 1538 directs the multi-select widget to store a sentence of the text 630 preceding the pointer 1527 of the selector 1526 in memory (e.g. in the location 40 of the variable memory 16). If the multi-select widget detects selection of the paragraph select icon 1532, block 1538 directs the multi-select widget to store a paragraph of the text 630 preceding the pointer 1527 of the selector 1526 in memory (e.g. in the location 40 of the variable memory 16). If the multi-select widget detects selection of the select all icon 1534, block 1538 directs the multi-select widget to store all of the text 630 preceding the pointer of the selector 1526 in memory (e.g. in the location 40 of the variable memory 16). Thus, for example, in the embodiment shown in FIG. 71, the word select icon 1528 has been selected by the user and thus, block 1534 directs the multi-select widget to store the word “cool” in memory (e.g. in the location 40).

In various embodiments block 1536 directs the multi-select widget to detect a position of the user's pointer along the selected text select icon and store input data similar to as described above having regard to blocks 196 and 198 of the flowchart 180 shown in FIG. 69.

Block 1540 directs the multi-select widget to cause the secondary application to use the stored portion of text as input data. In various embodiments, block 1540 may direct the multi-select widget to store an indicator indicating that a portion of the input data has been selected by the multi-select widget in memory (e.g. in the location 40) accessible to the secondary application. In such embodiments, the secondary application monitors memory (e.g. the location 40) looking for such an indicator, and once the secondary application determines that the indicator indicates that the multi-select widget has stored input data in memory, the secondary application treats the input data stored by the multi-select widget (e.g. in the location 40 of the variable memory 16) as described above for the input data from the keyboard stored in the memory (e.g. in the location 38 of the variable memory 16). In other embodiments, the multi-select widget may send a message to the secondary application indicating that a portion of text has been selected using the multi-select widget. For the embodiment shown in FIG. 71, block 1540 directs the multi-select widget to cause the Translator application to treat the word “cool” stored in memory by the multi-select widget as input data and thus the word “cool” is displayed at 1537 by the Translator application and a translation of “cool” (i.e. “frais”) is generated and displayed at 1539 by the Translator Application.

Network Connection Data

In various embodiments, the keyboard application manager may be directed by a block of code included in the block of codes 32 of the program memory 14 to query a network connection such as the I/O interface 18, determine whether there is a network connection and store network connection data associated with the network connection in memory (e.g. in the location 50 of the variable memory 16). In various embodiments, the network connection data may act as input data. In such embodiments, block 202 may direct the keyboard application manager to apply a category test to the network connection data stored in memory (e.g. in the location 50 of the variable memory 16).

In various embodiments, the network connection data may include a cost indicator indicating a cost of accessing the network. In various embodiments, the network connection data may also include a bandwidth indicator for indicating a bandwidth of the network connection.

In various embodiments, block 202 shown in FIG. 5 may direct the keyboard application manager to determine whether the network connection data stored in the location 50 indicates that the cost of accessing the network is less than or equal to a threshold cost and thus determine whether the network connection data falls within a Low Cost Network category. In various embodiments, the threshold cost may be $0 and thus the keyboard application manager may determine whether the cost of accessing the network is free.

In various embodiments, block 202 may direct the keyboard application manager to determine whether the network connection data stored in the location 50 indicates that the bandwidth of the network is greater than or equal to a threshold bandwidth and thus determine whether the network connection data falls within a High Bandwidth Network category. In various embodiments, the threshold bandwidth may correspond to a high-speed bandwidth connection, for example a connection able to transfer data at more than 1 Mb/s.

In various embodiments, there may be provided secondary applications which use a large quantity of bandwidth and thus require a free network connection to be desirable to the user. For example, a high bandwidth use secondary application may include an application data structure stored in the location 44 which includes a Low Cost Network category identifier identifying the Low Cost Network category. In such an embodiment, block 204 may direct the keyboard application manager to display an icon associated with a high bandwidth application on the display 20 for selection by the user, only when the keyboard application manager determines at block 202 that the network connection data falls within the Low Cost Network category.

In some variations, for example a secondary application such as a Movie application may be provided as a form of secondary application and may require high bandwidth and thus a Movie application data structure stored in memory (e.g. in the location 44 of the variable memory 16) may include a Low Cost Network category identifier identifying the Low Cost Network category. In such embodiments, block 204 may direct the keyboard application manager to display a Movie application icon on the display 20 for selection by the user, only when the keyboard application manager determines at block 202 that the network connection data falls within the Low Cost Network category.

An example of a network connection which may be associated with network connection data falling within a Low Cost Network category may be an internet connection such as a Wifi™ connection, or if the user has an unlimited data subscription, a mobile network connection such as a 4G or LTE connection.

In various embodiments, there may be provided high bandwidth use secondary applications which require a high-speed connection in order to be desirable to the user. In various embodiments, the high bandwidth use secondary applications may include in their respective application data structures stored in the location 44 a High Bandwidth Network category identifier identifying the High Bandwidth Network category. In such embodiments, block 204 shown in FIG. 5 may direct the keyboard application manager to display the high bandwidth use secondary application icon on the display 20 for selection by the user, only when the keyboard application manager determines at block 202 that the network connection data falls within the High Bandwidth Network category.

For example, a secondary application such as the Movie application may be a high bandwidth use application and thus a Movie application data structure stored in the location 44 may include High Bandwidth Network category identifier identifying the High Bandwidth Network category. In such an embodiment, block 204 may direct the keyboard application manager to display the Movie application icon on the display 20 for selection by the user, when the keyboard application manager determines at block 202 that the network connection data falls within the High Bandwidth Network category.

An example of such a network connection may be a 4G or LTE connection or an internet connection such as a Wifi™ connection.

Combination Categories

In various embodiments, secondary application data structures may include a combination category identifier which identifies more than one category and thus allows a secondary application to be associated with more than one category such that the secondary application's icon is displayed only when a certain combination of categories are fulfilled.

In various embodiments, each time that block 202 shown in FIG. 5 is invoked, block 202 may direct the keyboard application manager to store the results of a category test in memory (e.g. in the location 59 of the variable memory 16). In such embodiments, block 202 may apply a combination category test to determine whether the results stored in memory (e.g. in the location 59) fall within a combination category by reading the stored results of the category tests from memory (e.g. the location 59 of the variable memory 16) and determining whether all of the categories associated with the combination category have been met.

In some variations, for example, the Movie application data structure may include a combination category identifier identifying both the Bandwidth category and the Low Cost Network category and in such embodiments, the keyboard application manager is directed by block 202 to determine whether results stored in memory (e.g. in the location 59) indicate that the Bandwidth category and the Low Cost Network category have been met to determine whether the results stored in memory fall within the combination category identifier identifying both the Bandwidth category and the Low Cost Network category. Thus block 204 directs the keyboard application manager to display the Movie application icon on the display for selection by the user only when the keyboard application manager determines that the network connection falls within both the High Bandwidth Network and Low Cost Network categories.

Location Based

In various embodiments, location information may be retrieved by the keyboard application manager via the GPS receiver and transmitter 21, the NFC receiver and transmitter 23 or the I/O interface 18 and stored in memory (e.g. in the location 52 of the variable memory 16).

In various embodiments, the location information may act as input data and thus, in various embodiments, block 202 shown in FIG. 5 may direct the keyboard application manager to determine whether the location information (e.g. as stored in the location 52 of the variable memory 16) corresponds to an allowed location stored in memory (e.g. in the location 56 of the variable memory 16) to determine whether the location information falls within a category associated with the allowed location. In some variations, for example the allowed location stored in memory may be a work location and block 202 may direct the keyboard application manager to determine whether the location information stored in memory (e.g. in the location 52 of the variable memory 16) corresponds to the work location stored in memory (e.g. in the location 56 of the variable memory 16) to determine whether the location information falls within a Work Location category. The Work Location category may be, for example, associated with secondary applications that should be accessed at work. In various embodiments, there may be many different “allowed locations” stored in memory, each associated with a particular category.

In various embodiments, there may be provided a location sensitive secondary application which is only desirable to the user when the user is in a particular location. Accordingly, a data structure for the location sensitive secondary application may include a category identifier identifying a location category associated with the particular location where the location sensitive application is desirable.

Employee Management Application

In various embodiments, there may be provided a secondary application which is an Employee Management application. A user who is a human resources manager may only wish to access the Employee Management application when the user is at work. Thus, in various embodiments, the allowed location stored in memory (e.g. in the location 56 of the variable memory 16) may include work location information corresponding to the user's work location and block 202 shown in FIG. 5 may direct the keyboard application manager to determine that the location information stored in memory (e.g. in the location 52 of the variable memory 16) falls within a Work Location category when the location information corresponds to the work location information and thus indicates that the user is at work.

In various embodiments, an Employee Management application data structure stored in the location 44 of the variable memory 16 may include a combination category identifier that includes a Work Location category identifier and the Proper Noun category identifier.

In various embodiments, such as the embodiment shown in FIG. 72, the keyboard application manager may determine at block 202 that the location information stored in memory (e.g. in the location 52 of the variable memory 16) corresponds to the work location stored in memory (e.g. in the location 56 of the variable memory 16) and thus the location information falls within the Work Location category. The keyboard application manager may also determine at another iteration of an embodiment of block 202 that the input data stored in memory (e.g. in the location 38 of the variable memory 16) falls within the Proper Noun category described above. As described above, in various embodiments, the keyboard application manager may be directed to store the results of the Work Location category test and the Proper Noun category test in memory (e.g. in the location 59). Accordingly, in various embodiments, the keyboard application manager determines at another iteration of block 202 that the results stored in memory (e.g. in the location 59 of the variable memory 16) fall within the combination category that includes the Work Location category identifier and the Proper Noun category identifier. Accordingly, block 204 may direct the keyboard application manager to display an Employee Management application icon 920 on the display 20 for selection by the user.

If at block 206, the keyboard application manager detects selection of the Employee Management application icon 920, the keyboard application manager is directed to activate or invoke the Employee Management application by invoking a flowchart 940 as shown in FIG. 73.

As described for the flowchart 300 shown in FIG. 11, the flowchart 940 may be encoded in a different block of codes from the block of codes 32 of the program memory 14 for directing the personal computing device 10 to effect keyboard application manager functions. The flowchart 940 may be encoded in an Employee Management application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 940 depicts a process effected by the Employee Management application. The flowchart 940 may include steps generally similar to those included in the flowchart 300 described above in FIG. 11.

The flowchart 940 begins with block 942 which directs the Employee Management application to read employee information stored in memory (e.g. in the location 58 of the variable memory 16) to find and display a list of employees having respective employee information fields corresponding to the input data (e.g. as stored in the location 38 of the variable memory 16). An employee may be formatted similar to the contact 320 shown in FIG. 12. Employee information fields may be generally similar to the contact information fields and may include a first name field, a last name field, a hire date, an employee photo, a termination date, a manager, a title, a department, a position, an internal extension number, and an office number. Other employee fields may include, for example, any of the contact information fields described above having regard to the contact 320 shown in FIG. 12.

Block 943 directs the Employee Management application to detect user selection of one of the displayed employees. Once the Employee management application detects selection of one of the displayed employees, the process proceeds to block 944.

Block 944 directs the Employee Management application to display at least one of the employee information fields of the selected employee on the display 20, for selection by the user. Block 944 also directs the Employee Management application to display a Back icon, a Done icon, a Clip icon, and a Pin icon on the display 20 for user selection, similar to the embodiment shown in FIG. 14 for displaying the contact information fields of the contact 320.

Block 945 directs the Employee Management application to determine whether the Back icon has been selected by the user, and if the Back icon has been selected the Employee Management application is directed to return to block 942 to redisplay the list of employees on the display 20. Block 945 also directs the Employee Management application to determine whether the manager field has been selected. If the manager field has been selected, block 945 directs the Employee Management application to return to block 944 and display on the display 20 for selection by the user at least one employee information field of the employee that corresponds to the manager field selected. Thus, the Employee Management application allows the user to view the employee information fields of the manager by selecting the manager field.

Block 946 then directs the Employee Management application to detect selection of at least one of the employee information fields.

Block 948 directs the Employee Management application to detect selection of one of the Done, Clip and Pin icons. If at block 948, the Employee Management application detects selection of the Done icon, the process proceeds to block 950.

Block 950 directs the Employee Management application to add the selected at least one of the employee information fields to the input data stored in memory (e.g. in the location 38 of the variable memory 16) as described above having regard to block 310 of the flowchart 300 shown in FIG. 11, and cause the keyboard to be redisplayed. In various embodiments, block 950 directs the Employee Management application to add connecting text to the input data.

If at block 948, the Employee Management application detects selection of the Clip icon, the process proceeds to block 952. Block 952 directs the Employee Management application to store the selected at least one of the employee fields 952 in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 952 directs the Employee Management application to cause the keyboard to be redisplayed. However in other embodiments, block 952 may direct the Employee Management application to continue to control the display 20 and display the employee information fields for user selection and the user may exit the secondary application and pass control back to the keyboard program and the keyboard application manager, such as by selecting a close icon, for example, generally as described above having regard to block 312 shown in FIG. 11.

If at block 948, the Employee Management application detects selection of the Pin icon, the process proceeds to block 954. Block 954 directs the Employee Management application to generate state information defining a state of the Employee Management application and store the state information in the variable memory 16 (e.g. in the location 46). Block 954 also directs the Employee Management application to cause the keyboard to be redisplayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Access to Secondary Applications and Memory Via the Internet

Referring now to FIG. 74, there is shown a system 1003 for executing an action related to data input by a user in accordance with one embodiment. In various embodiments, the system 1003 includes the personal computing device 10 generally as shown in FIG. 18, a network 1001 such as the Internet, a server 1002 and server memory 1004. In various embodiments, the blocks of code 34 defining the secondary applications described herein as stored in the program memory 14 of the personal computing device 10 may also or alternatively be stored in the server memory 1004. Further, in various embodiments, the data described herein as stored in the variable memory 16 may also or alternatively be stored in the server memory 1004. In various embodiments, the personal computing device 10 may access the server memory 1004 via the network 1001.

In various embodiments, data stored in the variable memory 16 of the personal computing device as described herein, may instead be stored in the server memory 1004 and accessed by the personal computing device 10 via the network 1001. For example, the contact information or the employee information described herein as stored in the variable memory 16 may instead be stored in the server memory 1004. In various embodiments, the server memory 1004 may be configured to store a database such as a corporate database or a web services database. Similarly, in various embodiments the blocks stored in the program memory 14 shown in FIGS. 1 and 18, such as the blocks defining secondary applications, described herein as stored in the program memory 14 may instead be stored in the server memory 1004 and accessed by the personal computing device 10 via the network 1001.

In various embodiments, the personal computing device 10 may access the network 1001 via the I/O interface 18, NFC receiver and transmitter 23 or the Bluetooth receiver and transmitter 25, as shown in FIG. 18, for example.

Some examples of secondary applications which may be accessed via the Internet or may store memory via the Internet include but are not limited to: advertising applications, translation applications, contact manager applications, restaurant reservation applications, hotel/airline reservation applications, car leasing applications, and stock quote retrieving applications.

Pattern Recognizer

In various embodiments, determining whether the input data includes one of a plurality of patterns in block 202 of FIG. 5 may involve using code defining a pattern recognizer which in various embodiments may include a semantic engine.

In various embodiments, the pattern recognizer may be encoded in the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. In other embodiments, the pattern recognizer may be encoded separately from the keyboard application manager. In some variations, for example, the pattern recognizer may be encoded in the block of codes 35 of the program memory 14 as shown in FIG. 18. Alternatively, in various embodiments, the pattern recognizer may be implemented by an external device other than the personal computing device 10, such as the server 1002 shown in FIG. 74 and codes defining the pattern recognizer may be stored in memory external to the personal computing device 10 such as, for example, in the server memory 1004

In various embodiments the pattern recognizer may determine whether the input data falls within a particular category using generally the same processes described herein having regard to the keyboard application manager and block 202 shown in FIG. 5.

In various embodiments, the pattern recognizer may act as a semantic engine and determine the meaning or context of text included in the input data. In such embodiments, the pattern recognizer may identify parts of speech in the input data. In some variations, for example, the pattern recognizer may determine whether a particular proper noun is a name, a place, a car, or a sports team based on surrounding text within the input data and/or context.

In various embodiments, where the pattern recognizer is executed by an external device other than the personal computing device 10, block 202 of FIG. 5 may direct the keyboard application manager to send an input data message to the external device (e.g. the server 1002), the input data message including the input data or a portion thereof read from memory (e.g. the location 38 of the variable memory 16) or received from the keyboard program. In such embodiments, block 202 may direct the keyboard application manager to then receive a pattern message from the external device (e.g. the server 1002), the pattern message including pattern information and, based on the pattern information, determine whether the input data falls within a category.

The pattern recognizer may generate the pattern information based on the input data. In various embodiments, the pattern information may indicate for example, whether the input data falls within a particular pattern, such as a Name pattern associated with a Name category. The pattern information may also include information associated with the input data or text within the input data. In some variations, for example, where the pattern recognizer determines that one word in the input data is a name, the pattern information may identify the particular word as a name.

In various embodiments, block 202 of FIG. 5 may direct the keyboard application manager to send input data including “Hi, please contact Mark” to the pattern recognizer. For example, if the pattern recognizer is implemented by the server 1002 shown in FIG. 74, block 202 may direct the keyboard application manager to send the input data to the server 1002 via the I/O interface 18 in an input data message. The pattern recognizer may analyze the input data and generate pattern information based thereon. If the pattern recognizer is implemented by the server 1002 shown in FIG. 74, the server 1002 may then send the pattern information to the personal computing device 10 via the I/O interface 18.

Block 202 may then direct the keyboard application manager to receive and read the pattern information, and determine whether the input data falls within a category, based on the pattern information.

In some variations, for example, where the pattern information includes a Name category identifier indicating that the input data falls within a Name category, the keyboard application manager may determine, based on the pattern information (i.e. the Name category identifier) at block 202 that the input data falls within a Name category. In another embodiment where the pattern information identifies a certain word within the input data as a place and not a name, the keyboard application manager may, based on this information, determine that the input data does not fall within a Name category, but rather falls within a Place category.

Secondary Applications Involved in Category Determination

In various embodiments, determining whether the input data includes one of a plurality of patterns in block 202 of FIG. 5 may involve using a secondary application. In some variations, for example, block 202 may direct the keyboard application manager to invoke a block of codes defining a secondary application within the block of codes 34 of the program memory 14 to determine whether the input data stored in memory (e.g. in the location 38 of the variable memory 16) falls within a category.

In various embodiments, block 202 may direct the keyboard application manager to invoke a block of codes included in the Contact Manager application block of codes to determine whether input data corresponds to contact information fields associated with one of the contacts stored in memory (e.g. in the location 49 of the variable memory 16). In such embodiments, for example, the keyboard application manager may cause the Contact Manager application to determine whether a Proper Noun within the input data in memory corresponds to a first name field or a last name field of one of the contacts stored in memory. The Contact Manager application may store or send to the keyboard application manager a message including “TRUE” if the Proper Noun corresponds to a first name field or a last name field of one of the contacts and including “FALSE” if the Proper Noun does not correspond to a first name field or a last name field of one of the contacts stored in memory.

Block 202 shown in FIG. 5 may then direct the keyboard application manager to determine whether the input data falls within a Proper Noun Contact category based on the message. In various embodiments, the Contact Manager data structure may include a Proper Noun Contact category identifier and not the Proper Noun category identifier, and thus block 206 may direct the keyboard application manager to display the Contact Manager icon on the display 20 when the input data is found to fall within the Proper Noun Contact category, but not necessarily whenever the input data is found to fall within the Proper Noun category.

In various embodiments, block 202 may direct the keyboard application manager to invoke a block of codes included in the Login Management application block of codes to determine whether contextual information indicating a type of username expected corresponds to any login candidates stored in memory. In such embodiments, for example, the keyboard application manager may cause the Login Management application to read a website URL identifier from memory (e.g. the location 69) and determine whether the website URL identifier corresponds to a login candidate stored in memory. In various embodiments, Login Management application may store or send to the keyboard application manager a message including “TRUE” if the website URL identifier corresponds to a login candidate and including “FALSE” if the website URL identifier does not correspond to a login candidate stored in memory.

Block 202 may then direct the keyboard application manager to determine whether the input data falls within a Corresponding Login Candidate category based on the message. In various embodiments, the Login Management data structure may include a Corresponding Login Candidate category identifier, and not the Login Management category, and thus block 206 may direct the keyboard application manager to display the Login Management icon on the display 20 when the input data is found to fall within the Corresponding Login Candidate category but not necessarily whenever the input data is found to fall within the Login Management category.

Reservations

In various embodiments, the plurality of patterns detectable by the keyboard application manager include restaurant patterns (or restaurant reservation patterns) and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) corresponds to one of the restaurant patterns and thus falls within a Restaurant category. In such embodiments, block 202 may direct the keyboard application manager to determine whether the input data includes any of the following text, for example: “starved”, “starving”, “going out”, “reservation”, “restaurant”, “hungry”, or some other restaurant related input pattern. In the embodiment shown in FIG. 75, the input data includes the text, “I am starving.” and the keyboard application manager determines at block 202 that the input data includes one of the restaurant patterns (i.e. “starving”) and that the input data falls within the Restaurant category.

Various secondary applications may be associated with the Restaurant category. In some variations, for example, a Restaurant Reservation application may be provided as a form of secondary application for finding and displaying restaurant reservation information related to input data received from the user and may be associated with the Restaurant category. In various embodiments, the Restaurant Reservation application may be defined in the block 34 of the program memory 14 shown in FIG. 18. In such embodiments, a Restaurant Reservation application data structure similar in format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Restaurant category identifier may be stored in memory (e.g. in the location 44 of the variable memory 16). Thus, in various embodiments, block 204 directs the keyboard application manager to display a Restaurant Reservation icon 1020 on the display 20 for selection when the input data stored in memory (e.g. in the location 38 of the variable memory 16) is found to fall within the Restaurant category, as shown in FIG. 75. If at block 206, the keyboard application manager detects selection of the Restaurant Reservation icon 1020, the keyboard application manager may activate or invoke the Restaurant Reservation application by invoking a flowchart 1030 as shown in FIG. 76.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1030 may be encoded in a different block of codes from the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. More particularly, the flowchart 1030 may be encoded in a Restaurant Reservation application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1030 depicts a process effected by the Restaurant Reservation application. In various embodiments, the flowchart 1030 may include generally similar processes as those involved in the flowchart 300 shown in FIG. 11.

The flowchart 1030 begins with block 1032 which directs the Restaurant Reservation application to read restaurant reservation information from an external device such as a server on the internet such as the server 1002 shown in FIG. 74, to find and display a list of restaurant reservations 1046 on the display 20, as shown in FIG. 77. In various embodiments, the list of restaurant reservations 1046 may include restaurant reservations related to the input data. In the embodiment shown, each of the listed restaurant reservations includes a respective restaurant name and reservation date, as read from restaurant reservation information retrieved from the server 1002. In various embodiments, the restaurant reservation information may also be read from memory (e.g. the variable memory 16).

Block 1033 directs the Restaurant Reservation application to detect user selection of one of the displayed restaurant reservations 1046. Once the Restaurant Reservation application detects selection of one of the displayed restaurant reservations 1046, the process proceeds to block 1034. In this embodiment, the Restaurant Reservation application detects selection of a first reservation 1052.

Block 1034 directs the Restaurant Reservation application to display at least one restaurant reservation information field (or restaurant information field) associated with the selected restaurant reservation and retrieved from the server 1002 on the display 20, for selection by the user. In the embodiment shown in FIG. 78, the Restaurant Reservation application causes the display 20 to display the following restaurant reservation information fields associated with the first reservation 1052: a restaurant name 1054, a reservation time 1056, a reservation date 1058, a reservation count 1060, and special menu information 1062 for user selection. In various embodiments, other restaurant reservation fields may include, for example, restaurant ratings, restaurant descriptions and restaurant menus. Block 1034 also directs the Restaurant Reservation application to display a Back icon 1070, a Done icon 1064, a Clip icon 1066, and a Pin icon 1068 on the display 20 for user selection.

Block 1035 directs the Restaurant Reservation application to determine whether the Back icon 1070 has been selected by the user, and if the Back icon 1070 has been selected, the Restaurant Reservation application is directed to return to block 1032 to redisplay the list of restaurant reservations 1046 on the display 20 as shown in FIG. 77.

Block 1036 directs the Restaurant Reservation application to detect selection of at least one of the restaurant reservation information fields. In the embodiment shown in FIG. 78, the Restaurant Reservation application has detected selection of the restaurant name 1054 and the reservation time 1056, and thus these fields are shown as shaded.

Block 1038 directs the Restaurant Reservation application to detect selection of one of the Done, Clip and Pin icons 1064, 1066, and 1068. If at block 1038, the Restaurant Reservation application detects selection of the Done icon 1064, the process proceeds to block 1040.

Block 1040 directs the Restaurant Reservation application to add connecting text and the selected restaurant reservation fields to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and cause the keyboard to be redisplayed. Where the restaurant name 1054 and the reservation time 1056 have been selected by the user, block 1040 directs the Restaurant Reservation application to add the connecting text, “We have a reservation at” followed by the restaurant name 1054 followed by the connecting text “at”, followed by the reservation time 1056 to the text. Thus, in the embodiment shown, the Restaurant Reservation application would add the text, “We have a reservation at Eric's Restaurant at 7:30 pm” to the input data stored in memory. The input data is displayed by the personal computing device 10 as if the input data including the connecting text and the selected restaurant reservation fields had been provided by the keyboard. Of course, as with all connecting text, in various embodiments, other connecting text may be used. The connecting text may be chosen according to which reservation information fields have been selected.

If at block 1038, the Restaurant Reservation application detects selection of the Clip icon 1066, the process proceeds to block 1042. Block 1042 directs the Restaurant Reservation application to store the selected at least one of the restaurant reservation fields in memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1042 directs the Restaurant Reservation application to cause the keyboard to be redisplayed. However in other embodiments, block 1042 may direct the Restaurant Reservation application to continue to control the display 20 and display the restaurant reservation fields for user selection and the user may exit the secondary application and pass control back to the keyboard program and the keyboard application manager, such as by selecting a close icon, for example, generally similar to as described having regard to block 312 of the flowchart 300 shown in FIG. 11.

If at block 1038, the Restaurant Reservation application detects selection of the Pin icon 1068, the process proceeds to block 1044. Block 1044 directs the Restaurant Reservation application to generate state information defining a state of the Restaurant Reservation application and store the state information in memory (e.g. in the location 46 of the variable memory 16). In this embodiment, for example, the state information may include a reservation identifier corresponding to the first reservation 1052 which was selected at block 1033. Block 1044 also directs the Restaurant Reservation application to cause the keyboard to be redisplayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Theatre Listings

In various embodiments, the plurality of patterns detectable by the keyboard application manager in block 202 shown in FIG. 5 may include Movie Name patterns and applying the category test involves determining whether the input data from the user (e.g. the input data stored in the location 38 of the variable memory 16) and stored in the memory corresponds to one of the Movie Name patterns and falls within a Movie Name category. In such embodiments the Movie Name patterns may be accessible by the personal computing device 10 via a network such as the Internet. For example, the Movie Name patterns may be stored in a database in the server memory 1004 and may be accessed via the server 1002 shown in FIG. 74. In various embodiments, the Movie Name patterns may be stored in the variable memory 16 and may be periodically updated via the Internet.

The Movie Name patterns may include any currently playing movie names. In various embodiments, the Movie Name pattern may be used in combination with the category test for determining whether input data includes a proper noun such that a determination as to whether the input data includes one of the Movie Name patterns may only need to be made once it has been determined that the input data includes a proper noun.

Accordingly, in various embodiments, block 202 may direct the keyboard application manager to determine whether the input data begins with an uppercase letter and, only if the keyboard application determines that the input data does begin with an uppercase letter, the keyboard application determines whether the input data includes one of the Movie Name patterns. In the embodiment shown in FIG. 79, the input data includes the text, “The Shark” Because, “The Shark” is included in the Movie Name patterns, the keyboard application manager determines at block 202 that the input data includes one of the Movie Name patterns and that the input data falls within the Movie Name category.

Various secondary applications may be associated with the Movie Name category. In some variations, for example, a Theatre Listing application may be provided as a form of secondary application for finding and displaying theatre listings related to the input data and may be associated with the Movie Name category. In various embodiments, the Theatre Listing application defined in the block 34 of the program memory 14. In such embodiments, a Theatre Listing application data structure similar in format to the Contact Manager application data structure 240 shown in FIG. 6, but including a Movie Name category identifier may be stored in memory (e.g. in the location 44). In various embodiments, block 204 directs the keyboard application manager to display a Theatre Listing icon 1140 on the display 20 for selection when the input data stored in memory (e.g. in the location 38 of the variable memory 16) is found to fall within the Movie Name category, as shown in FIG. 79. If at block 206, the keyboard application manager detects selection of the Theatre Listing icon 1140, the keyboard application manager may activate or invoke the Theatre Listing application by invoking a flowchart 1150 as shown in FIG. 80. In various embodiments, the keyboard application may send the particular one of the Movie Name patterns that the input data was found to include to the Theatre Listing application upon invoking the Theatre Listing application.

As described for the flowchart 300 shown in FIG. 11, the flowchart 1150 may be encoded in a different block of codes from the block of codes 32 for directing the personal computing device 10 to effect keyboard application manager functions. The flowchart 1150 may be encoded in a Theatre Listing application block of codes within the block of codes 34. Thus, in various embodiments, the flowchart 1150 depicts a process effected by the Theatre Listing application.

The flowchart 1150 begins with block 1152 which directs the Theatre Listing application to read Theatre Listing information from a server on the internet such as the server 1002 shown in FIG. 74 to determine what theatres located near the user are playing movies having a movie name corresponding to the input data. In various embodiments, the Theatre Listing application may use the Movie Name pattern that the input data was found to include and the location information stored in memory (e.g. in the location 52 of the variable memory 16) to lookup the Theatre Listing information. Block 1152 directs the Theatre Listing application to display on the display 20 a list 1166 of theatres located near the user that are playing a movie corresponding to the input data, as shown in FIG. 81. In the embodiment shown in FIG. 81, the Theatre Listing application displays movie names corresponding to the input data along with the listed theatre names.

Block 1153 directs the Theatre Listing application to detect user selection of a theatre name from the list 1166. Once the Theatre Listing application detects selection of one of the theatre names, the process proceeds to block 1154. In the embodiment shown, the Theatre Listing application detects selection of a first theatre name 1172.

Block 1154 directs the Theatre Listing application to display on the display 20 at least one theatre listing information field associated with the selected theatre name and corresponding movie name for selection by the user. In various embodiments, the theatre listing information fields may be retrieved from an external device such as, for example, the server 1002. In other embodiments, the theatre listing information fields may be retrieved from the personal computing device 10 memory (e.g. the variable memory 16). In the embodiment shown in FIG. 82, the Theatre Listing application causes the display 20 to display the following theatre listing information fields: a movie name 1173, a theatre name 1174, which in this embodiment corresponds to the selected first theatre name 1172, first, second, and third showing times 1176, 1178 and 1180, and a movie rating 1182 for user selection. Block 1154 also directs the Theatre Listing application to display a Back icon 1190, a Done icon 1184, a Clip icon 1186, and a Pin icon 1188 on the display 20 for user selection.

Referring back to FIG. 80, block 1155 directs the Theatre Listing application to determine whether the Back icon 1190 has been selected by the user, and if the Back icon 1190 has been selected, the Theatre Listing application is directed to return to block 1152 to redisplay the list of theatre names 1166 on the display 20 as shown in FIG. 81.

Block 1156 directs the Theatre Listing application to detect selection of at least one of the Theatre Listing information fields. In the embodiment shown in FIG. 82, the Theatre Listing application has detected selection of the theatre name 1174, the first showing time 1176, and the second showing time 1178, and thus these are shown as shaded.

Block 1158 directs the Theatre Listing application to detect selection of one of the Done, Clip and Pin icons 1184, 1186, and 1188. If at block 1158, the Theatre Listing application detects selection of the Done icon 1184, the process proceeds to block 1160.

Block 1160 directs the Theatre Listing application to add connecting text and the selected theatre listing information fields to the input data stored in memory (e.g. in the location 38 of the variable memory 16) and to cause the keyboard to be redisplayed. Where the theatre name 1174, the first showing time 1176, and the second showing time 1178 have been selected by the user, as shown in FIG. 82, block 1160 directs the Theatre Listing application to add the connecting text, “is playing at” followed by the theatre name 1174, followed by the connecting text “at”, followed by the first showing time 1176, followed by the connecting text “and”, followed by the second showing time 1178 to the input data. Thus, in the embodiment shown, the Theatre Listing application would add the text, “is playing at Theatre name 1 at 7:30 pm and 9:30 pm” to the input data stored in memory (e.g. in the location 38 of the variable memory 16) such that the input data includes the phrase, “The Shark is playing at Theatre name 1 at 7:30 pm and 9:30 pm”. The input data may then be displayed by the device application as if the input data including the connecting text and the selected theatre listing fields had been provided by the keyboard. In various embodiments, other connecting text may be used according to which fields have been selected.

If at block 1158, the Theatre Listing application detects selection of the Clip icon 1186, the process proceeds to block 1162. Block 1162 directs the Theatre Listing application to store the selected at least one of the theatre listing fields in the memory (e.g. in the location 39 for storing clipboard copied data) for later insertion into the input data or another editable field or document. In various embodiments, block 1162 directs the Theatre Listing application to cause the keyboard to be redisplayed. However in other embodiments, block 1162 may direct the Theatre Listing application to continue to control the display 20 and display the theatre listing information fields for user selection and the user may exit the secondary application and pass control back to the keyboard program and the keyboard application manager, such as by selecting a close icon, for example, generally similar to as described having regard to block 312 of the flowchart 300 shown in FIG. 11, for example.

If at block 1158, the Theatre Listing application detects selection of the Pin icon 1188, the process proceeds to block 1164. Block 1164 directs the Theatre Listing application to generate state information defining a state of the Theatre Listing application and store the state information in the memory (e.g. in the location 46). In this embodiment, the state information may include a theatre identifier and a movie identifier corresponding to the first theatre name 1172 and the movie name identified as corresponding to the input data. Block 1164 also directs the Theatre Listing application to cause the keyboard to be redisplayed and to cause the keyboard application manager to display a resume state icon on the display 20 generally as described and shown above having regard to FIG. 17, for example.

Activating the Status Notification Bar/Notification Region

Referring now to FIG. 83, in various embodiments, the keyboard 104 may be displayed on the display 20 without the status notification bar 126 (shown in FIG. 4, for example). Instead, in various embodiments, such as the one shown in FIG. 83, the keyboard 104 may be displayed in conjunction with a notifier. In the embodiment shown in FIG. 83, a notifier bar 1580 acts as the notifier. In various embodiments, the notifier bar 1580 may take up less area on the display 20 than the status notification bar 126 and therefore may allow for more area on the display dedicated to the keyboard 104, for example. For illustration purposes, the notifier bar 1580 is displayed as a narrow strip that is user selectable, although in other embodiments the notifier may be another visually distinctive graphical element displayed on the user interface to alert the user of the availability of user selectable secondary applications.

A change in appearance of the notifier bar 1580 may be used to notify a user that one or more icons associated with one or more secondary applications are available for display and user selection from the status notification bar 126 if the status notification bar 126 were activated by the user and displayed on the user interface. Accordingly, in various embodiments the notifier bar 1580 may change in appearance under the same conditions that would cause an icon to be displayed on the status notification bar 126, as described above. In various embodiments, the display of icons associated with persistent secondary applications in the status notification bar 126 may not result in a change in In the embodiment shown in FIG. 83, the notifier bar 1580 is shown having a first, unchanged appearance. In this mode of operation, no status notification bar 126 is displayed on the user interface until the notifier bar 1580 changes appearance to indicate the availability of one or more secondary applications associated with current input data, and the user then activates the display of the status notification bar 126 within which are displayed icon(s) corresponding to those one or more secondary applications. An illustration of the operation of the notifier bar 1580 in cooperation with the status notification bar 126 is set out below.

Referring back to FIG. 5, block 202 of the flowchart 200 directs the keyboard application manager to read input data from memory and determine whether the input data falls within a category. In various embodiments such as, for example, the embodiment shown in FIG. 83, wherein the keyboard 104 is displayed on the display 20 in conjunction with the notifier bar 1580, if it is determined at block 202 that input data falls within a category, block 204 of FIG. 5 may direct the keyboard application manager to activate or invoke a process depicted by flowchart 1600, as shown in FIG. 84. In some embodiments, the flowchart 1600 may be encoded as part of the block of codes 32 of the personal computing device shown in FIG. 1, for example.

Referring now to FIGS. 5 and 85, where for illustration purposes the input data includes input text, “Hi, please contact Mark”, block 202 may direct the keyboard application manager to determine that the input data falls within the Proper Noun category, and block 204 may direct the keyboard application manager to read from memory to determine whether an icon is stored in association with the Proper Noun category. Once the keyboard application manager has determined that an icon is stored in association with the Proper Noun category, block 204 may cause the keyboard application manager to invoke the flowchart 1600.

The flowchart 1600 begins with block 1602 which directs the keyboard application manager to cause the display device 20 to display a notification. The display of the notification indicates to a user that at least one icon associated with a predetermined category which the input data has been determined to fall within is available for display on the status notification bar 126.

In the embodiment shown in FIG. 85, where the notifier bar 1580 acts as the notifier, the keyboard application manager is directed by block 1602 to cause the display device 20 to alter an appearance of the notifier bar 1580. In the embodiment shown in FIG. 85, the notifier bar 1580 is shown having a second altered appearance.

For illustration purposes with the embodiment shown in FIG. 85, block 1602 causes the display 20 to alter the appearance of the notifier bar by causing the notifier bar 1580 to appear as highlighted. In various embodiments, block 1602 may also or alternatively cause the display 20 to alter the appearance of the notifier bar by causing a color displayed in association with the notifier bar 1580 to be changed. For example, block 1602 may cause the notifier bar 1580 to change from a black color to a blue color (although any other colors may be used as well, both for the initial or inactive mode indicating no icons are available for selection and the notification mode notifying of at least one icon being available).

In some embodiments, the notifier may not be displayed on the display 20 until a notification is to be displayed. In some variations, for example, the notifier bar 1580 may be hidden or not displayed in an inactive mode and altering the appearance of the notifier bar 1580 may involve causing the notifier bar 1580 to be displayed on the display 20.

Block 1604 then directs the keyboard application manager to detect activation of the status notification bar 126 (shown in FIG. 4, for example). In various embodiments, a user may activate the status notification bar 126 by selecting the notification (e.g. by selecting the notifier bar 1580). In some embodiments, a user may activate the status notification bar 126 using a gesture. For example, the gesture may involve moving a pointing device, such as a finger touching the display device 20 near the notifier bar 1580, upward. Accordingly, block 1604 may direct the keyboard application manager to detect selection of the notifier bar 1580 or to detect a gesture associated with activation of the status notification bar 126.

In response to detecting activation of the status notification bar 126, block 1606 then directs the keyboard application manager to display an icon (e.g. the icon 244) on the display 20 in the status notification bar 126, generally as described above having regard to block 204 of FIG. 5, and as shown in FIG. 4. In some embodiments, block 1606 may direct the keyboard application manager to cause the display 20 to display the keyboard 104 as shifted upward to allow for the display of the status notification bar 126, as shown in FIG. 86.

Block 1608 then directs the keyboard application manager to determine whether the detected activation is a permanent activation. In various embodiments, certain gestures may be considered as permanent activations. For example, dragging of a pointer such as a user finger, stylus or other pointing device, more than halfway up the display 20 may be considered a permanent activation. In another embodiment, selection of the notifier bar 1580 for greater than a threshold time limit such as, by way of example only, about 1-2 seconds, may be considered a permanent activation (other longer or shorter time limits may be used sufficient to provide a trigger indicating a permanent activation). Accordingly, in various embodiments block 1608 may direct the keyboard application manager to determine whether the activation was a permanent activation by determining whether a gesture or a selection has been detected that corresponds to permanent activation. In various embodiments, block 1608 may direct the keyboard application manager to determine whether a pointer has been dragged more than halfway up the display 20. In another embodiment, block 1608 may direct the keyboard application manager to determine whether a selection of the notifier bar for greater than a predetermined time limit (e.g. about 1-2 seconds or more) has been detected.

If at block 1608 it is determined that the user activation was not a permanent activation, the process proceeds to block 1610 which directs the keyboard application manager to detect user deactivation of the status notification bar, and once deactivation is detected, cause the display 20 to remove the status notification bar 126 from the display. In various embodiments, block 1610 may direct the keyboard application manager to detect user deactivation of the status notification bar 126 by detecting a release of the user's finger from contact with the display 20.

Once deactivation is detected, block 1610 directs the keyboard application manager to cause the display 20 to remove the status notification bar 126 from the display, causing the display 20 to appear as shown in FIG. 85, for example. Accordingly, a user may take a temporary “peek” at the status notification bar by using a non-permanent activation. After block 1610 concludes, the process returns to block 1602.

If at block 1608 it is determined that the activation detected was a permanent activation, the flowchart 1600 ends, with the status notification bar 126 displayed on the display 20. The end of the flow chart 1600 may end block 204 shown in FIG. 5, and the process shown in FIG. 5 may continue at block 206 generally as described above.

Display of Keyboard and Secondary Application Concurrently

In various embodiments disclosed in this description, control of a portion of the display 20 is handed over from the keyboard application and/or keyboard application manager to various secondary applications. For example, in the embodiment shown in FIG. 21, the Measurement Conversion application is given control of a portion of the display 20 that previously displayed the keyboard 104 and status notification bar 126 (shown in FIG. 19, for example). The Measurement Conversion application then causes a user interface to be displayed in place of the keyboard 164 and status notification bar 126, within which user interface may be displayed the first number 424, first unit 422, second number 428, second unit 426, Replace icon 430, Add to icon 432, Clip icon 434, and Pin icon 436. However in various alternative embodiments, the keyboard 104 and/or status notification bar may continue to be displayed on the display 20 together with portions of the display 20 controlled by any of the secondary applications, such as, for example, as shown in the embodiment shown in FIG. 87.

In the embodiment shown in FIG. 87, the Measurement Conversion application is given control of a portion of the portion 106 of the display 20, formerly controlled by the device application. Accordingly, the first number 424, first unit 422, second number 428, second unit 426, Replace icon 430, Add to icon 432, Clip icon 434, and Pin icon 436 are displayed, using the Measurement Conversion application, above the keyboard 104.

Displaying the keyboard 104 in combination with the secondary application may allow a user to use the keyboard 104 to interact with the secondary application. For example, in the embodiment shown in FIG. 87, a user may modify the first number 424, first unit 422, second number 428, or second unit 426, for example, by selecting one of the first number 424, first unit 422, second number 428, and second unit 426 and typing on the keyboard 104.

Voice-Based User Input and Icon Presentation

In various embodiments, keyboard entry may be replaced or supplemented with voice recognition as another form of user input. In some variations, for example, the keyboard can be replaced with a voice-based user input system for the entry of user input, in which case the keyboard application manager may be substituted with an input application manager configured to perform equivalent operations but through the processing of voice-based user input. In various embodiments, the voice-based user input system can be used to not only generate input but to also to make various user selections using voice recognition-based commands in place of keystrokes or keyboard-based commands. In such embodiments, a user may optionally switch between generating input and making commands via a virtual or physical button or switch on the personal computing device 10, for example, that can be used to provide multi-modal control (e.g. one mode being generating input, the other mode being command entry).

As with other equivalent keyboard-based embodiments described above, with voice-based entry of user input, the input application manager can run concurrently with the voice-base user input system, can read the input data received from the user via the voice-based user input system (and optionally from the keyboard program or other form of input program where both forms of data entry systems are provided), and monitors the input data as described above to determine whether the input data falls into various predetermined categories. In some variations, for example, the input application manager may monitor the input data for various patterns associated with various predetermined categories. When the input data is found to fall within a predetermined category, secondary applications associated with the predetermined category are made available, activated and used in the manner previously described in this specification in connection with keyboard-based data entry systems.

Input Pattern Activity Notification

In various embodiments, a secondary application may be registered with the keyboard application manager to automatically receive an input pattern activity notification when the keyboard application manager identifies a predetermined type of input received from the user. In various such embodiments, the secondary application is registered to receive such input pattern activity notifications when user input falls within one or more categories monitored by the keyboard application manager. When the keyboard application manager recognizes a portion of input data received from the user via the keyboard (or other input device) as matching the one or more categories for which the secondary application is registered to receive the input pattern activity notification, the keyboard application manager may send a message or signal to the secondary application informing the secondary application of the particular categories (or topics associated with those categories) that have matched up with the user input.

The secondary application may then take an action based on the received input pattern activity notification. In some variations, for example, the secondary application may retrieve additional topical information related to the particular categories identified in the input pattern activity notification.

The additional topical information associated with the user's input pattern activity recognized by the keyboard application manager using pre-assigned categories can take many different forms. For instance, the additional topical information may include further related descriptive information or data, one or more hyperlinks to more information associated with the categories (or associated topics) that triggered the input pattern activity notification, graphical images associated with the categories or topics, and/or audio/visual files (or links to those files for playback). In some variations, the secondary application may, upon receiving the input pattern activity notification, automatically, or at the option of the user, activate the retrieval and display of a video (e.g. a YouTube™ video).

The additional topical information may be retrieved via the secondary application locally from the personal computing device 10, remotely from a remote server in communication with the secondary application, or through the combination of local and remote retrieval of such additional topical information.

Secondary Virtual Display

In various embodiments, once the additional topical information is retrieved by or via the secondary application, the additional topical information may be presented to the keyboard application manager for further manipulation (including optional insertion into the text or file that the user is generating via the keyboard) or the additional topical information may be displayed on (or transmitted for display on) a secondary display region for user interaction. The secondary display region may be a region of the active portion of a current user interface displayed on display 20, a separate window displayed on the user interface or accessible for display via the user interface, a web browser activated by the secondary application or the keyboard application manager (or the server in communication therewith) based on the additional topical information, or a user notification tool supported by the operating system (e.g. the Android™ notification system or iOS™ notification system that allows a user to pull down a list of recent notifications or messages from various applications via the user interface for the operating system). Alternatively, the secondary display region may be part of a secondary display device configured to communicate (remotely or locally, including on the same device) with the keyboard application manager via the personal computing device 10.

In various embodiments the secondary display region may be a “floating” display region that can be moved around the user interface by the user. In other embodiments the secondary display region may be a semi-transparent display region that allows for the display of and interaction with the additional topical information while allowing a user to see information displayed on the user interface beneath the secondary display region.

In other embodiments the additional topical information may be sent from the remote server or locally from the personal computing device 10 (e.g. at the initiation of the secondary application) via text messaging, email to an email address, Facebook account, twitter account or other online or social networking account associated with the user currently logged in and using the keyboard application manager (or to another email address, twitter account or other online or social networking account configured for such transmission by the user).

In various embodiments, for example, a Travel application may be a secondary application that is registered to receive an input pattern activity notification when the keyboard application manager identifies any of the following patterns in the input data received from the keyboard: “South America”, “Brazil”, “Chile”, “Europe”, “France”, “England”, or another form of input identifying a country, state, region or continent. For example, the patterns, “South America”, “Brazil”, and “Chile” may be associated with a “South America” topic and the patterns “Europe”, “France”, and “England” may be associated with a “Europe” topic.

In one illustration, for example, the user may input the pattern “Brazil” via the keyboard and this causes the keyboard application manager to send to the Travel application an input pattern activity notification including a topic identifier identifying the “South America” topic. In response, the Travel application may retrieve additional topic information, such as, for example, flight deals for flights to cities in South America and related hotel options and deals, from a server in communication with the Travel application over the Internet. The Travel application may then cause a notification to be displayed on the personal computing device 10, including information associated with the flight deals and related hotel options and deals, and/or the Travel application may cause a hyperlink to be displayed that can link the user to a website for booking one or more of those flights and/or hotels.

In another embodiment, a Reservation application may, by way of example, be a secondary application that is registered to receive an input pattern activity notification when the keyboard application manager identifies any of the following patterns in the input data received from the keyboard: “steak”, “lobster”, “foie gras”, “burger”, “fries”, “soda”, or other similar food related terms. In such a case, for example, the patterns, “steak”, “lobster”, and “foie gras” may be associated with a “fine dining” topic and the patterns “burger”, “fries”, and “soda” may be associated with a “fast food” topic.

In one illustration of the foregoing example, the user may input the pattern “steak” via the keyboard and this causes the keyboard application manager to send to the Reservation application an input pattern activity notification including a topic identifier identifying the “fine dining” topic. In response, the Reservation application may retrieve additional topic information, such as, for example, a list of fine dining restaurants near the user (the Reservation application may determine location information to refine this list) wherein there is an available table. The Reservation application may retrieve the list via a server over the Internet for example. The Reservation application may then cause a floating or virtual display region to be displayed on the personal computing device 10, displaying the list of fine dining restaurants, with links to reserve tables at those restaurants, on the display 20, for example.

In another example, an Group Deals application may serve as a secondary application that is registered to receive an input pattern activity notification when the keyboard application manager identifies any of the following patterns in the input data received from the keyboard: “eat”, “food”, “dinner”, “play”, “bored”, “doing”, or another term or phrase associated with predetermined categories for which deals may be available via the Group Deals application. For example, the patterns, “eat”, “food”, and “dinner” may be associated with a “food” topic and the patterns “play”, “bored”, and “doing” may be associated with an “activities” topic.

In one illustration of the foregoing example, the user may input the pattern, “play” via the keyboard and this causes the keyboard application manager to send to the Group Deals application an input pattern activity notification including a topic identifier identifying the “activities” topic. In response, the Group Deals application may, for example, retrieve additional topic information, such as, for example, a list of deals available via a company associated with the Group Deals application that are activity based (e.g. golfing, dancing, laser-tag, or some other activity-related input pattern). The Group Deals application may retrieve the list via a server over the Internet for example. The Group Deals application may then send a text message to the user via the personal computing device 10, including in the text message information and/or links associated with the list of activity based deals, for example.

In various other embodiments, various secondary applications may be registered to receive input pattern notification messages, such as, for example, secondary applications associated with any or all of the following: Amazon™, Walmart™ eBay™, BestBuy™, JCPenney™, Target™, Kohls™, Google™, and Overstock™.

By using an input pattern notification such as one of those described above, only limited information related to a user and their input activity may be transmitted to third parties through secondary applications in various embodiments. This optionally allows one to avoid sharing with a third party large amounts of personal or private information related to a user when input patterns are being monitored for user interests. Thus, the user may retain a degree of privacy while still allowing various secondary applications to be alerted to categories of user activity so that those secondary applications may provide enhanced functionality or information to the user through predictions based on topics and categories associated with the user's input data. In effect, the categorization of types of user input data allows the keyboard application manager in various embodiments to inform secondary applications of certain patterns of user activity without having to share the specific input data entered by the user. The keyboard application manager can thereby act both as a conduit for additional services or functionality via secondary application, and also as a screen, limiting what personal input data is passed on to third parties.

In various embodiments, many of the secondary applications described herein may share generally similar steps. Accordingly, in various embodiments described herein, blocks in the flowcharts describing the functions of the secondary applications may include generally similar steps or processes when compared to other blocks in the flowcharts of other secondary applications. Any of these similar blocks may include any or all of the steps or processes of any or all of the other similar blocks and in various embodiments the blocks may be consolidated to perform the same steps.

For illustration purposes, certain embodiments have been shown and described above, using particular embodiments of various secondary applications including a contact manager application, conversion applications, a calculator application, or a translation application, for example. However, other secondary applications could be used in place of or in conjunction with those illustrated secondary applications. Further, in various embodiments, additional secondary applications not described herein may also be similarly implemented in the personal computing device 10 provided they cooperate with the keyboard application manager as described herein.

In various embodiments, any or all of the secondary applications may be associated with any or all of the above described categories.

Various examples of connecting text have been described above. One skilled in the art would understand that the exemplary connecting text described herein is merely presented by way of example and any connecting text that allows the user to more easily understand an amendment to the input data may also be used.

While specific embodiments of the invention have been described and illustrated, such embodiments should be considered illustrative of the invention only and not as limiting the invention as construed in accordance with the accompanying claims. 

1.-58. (canceled)
 59. A computer-implemented method comprising: displaying a first user interface associated with a primary application on a display of a computing device; receiving, via the primary application, first input data associated with the first user interface; displaying one or more identifiers on the display based on the first input data, each identifier being associated with one secondary application of a plurality of different secondary applications available to the computing device, each different secondary application being operable to perform a function different from the primary application; selecting, in response to a user input associated with one identifier of the one or more identifiers, a select secondary application from amongst the plurality of different secondary applications; causing the select secondary application to assume control of at least a portion of the display; displaying a second user interface associated with the select secondary application on the display; receiving, via the select secondary application, second input data associated with the second user interface; performing, via the select secondary application, at least one operation based on the first input data and the second input data, to produce output data; displaying the output data on the display; and returning control of the at least a portion of the display to the primary application.
 60. The method of claim 59, comprising: receiving, via the primary application, the first input data in response to a first input action; and receiving, via the select secondary application, the second input data in response to a second input action, wherein the first input action is different from the second input action.
 61. The method of claim 59, comprising: receiving, via the primary application, location data for the computing device; and displaying the one or more identifiers based on the first input data and the location data.
 62. The method of claim 59, wherein the one or more identifiers comprise one or more icons.
 63. The method of claim 59, wherein receiving the second input data comprises: retrieving, via the select secondary application, additional data from memory of the computing device; displaying the additional data on the display; and receiving, via the select secondary application, the second input data as a user selection based on the additional data.
 64. The method of claim 63, wherein: the additional data comprises a data set having a plurality of information fields; the user selection is associated with at least one information field of the plurality of information fields; and retrieving the additional data comprises: retrieving, via the select secondary application, the data set based on the first input data and the select at least one information field.
 65. The method of claim 64, wherein the additional data comprises at least one of: a contact having a plurality of contact information fields; a reservation having a plurality of reservation information fields; a theatre having a plurality of theatre information fields; an appointment having a plurality of appointment information fields; a task having a plurality of task information fields; and a song having a plurality of song information fields.
 66. The method of claim 59, wherein: the primary application comprises a keyboard program; the first user interface comprises an interface for the keyboard program; and the one or more identifiers are displayed adjacent or near the interface for the keyboard program.
 67. The method of claim 59, wherein each secondary application of the plurality of different secondary applications is configured to perform a different function.
 68. The method of claim 59, wherein: the first input data comprises a first number relative to a first measurement unit; and performing the at least one operation comprises: converting, via the select secondary application, the first number relative to the first measurement unit into a second number relative to a second measurement unit.
 69. The method of claim 59, comprising: monitoring, via the primary application, the first input data to identify one or more associations with the plurality of different secondary applications; and generating, via the primary application, the one or more identifiers based on the one or more associations.
 70. The method of claim 59, comprising: determining, via the primary application, whether the first input data comprises at least one pattern of a plurality of patterns associated with a predetermined category; and selecting, if the first input data comprises the at least one of a plurality of patterns associated with the predetermined category, the one or more identifiers for display on the display based on the predetermined category.
 71. The method of claim 59, wherein causing the select secondary application to assume control comprises: monitoring for a user input action associated with the select secondary application; and activating, via the primary application, in response to detecting the user input action, the select secondary application.
 72. A computer-implemented method comprising: displaying a first user interface associated with a primary application on a display of a computing device; receiving, via the primary application, first input data associated with the first user interface; determining whether the first input data comprises at least one pattern of a plurality of patterns associated with a predetermined category; displaying, if the first input data comprises the at least one pattern, one or more identifiers on the display, each identifier being associated with one secondary application of a plurality of different secondary applications, each different secondary application being operable to perform a function different from the primary application; activating, in response to a user input associated with one identifier of the one or more identifiers, a select secondary application from amongst the plurality of different secondary applications; causing the select secondary application to assume control of at least a portion of the display; displaying a second user interface associated with the select secondary application on the display; receiving, via the select secondary application, second input data associated with the second user interface; performing, via the select secondary application, at least one operation based on the first input data and the second input data, to produce output data; and displaying the output data on the display.
 73. The method of claim 72, comprising: returning control of the at least a portion of the display to the primary application.
 74. The method of claim 72, comprising: receiving, via the select secondary application, third input data; and performing, via the select secondary application, one output function of a plurality of output functions in response to the third input data, each output function being contextually associated with the select secondary application.
 75. A computer-implemented method comprising: displaying a first interface for a keyboard program on a display of a computing device; receiving, via the keyboard program, input data associated with a primary application that the keyboard program is in communication with; detecting, via the keyboard program, a user input action associated with activating a secondary application, the secondary application configured to perform a function different from the primary application; initiating, via the keyboard program, in response to detecting the user input action, activation of the secondary application to search for results associated with the input data; obtaining output data via the secondary application, the output data being produced based on the search for results associated with the input data initiated by the secondary application; and displaying the output data on the display in an interface used by the primary application.
 76. The method of claim 75, wherein detecting the user input action comprises: displaying an identifier on the display based on the input data; and monitoring for user selection of the identifier.
 77. The method of claim 76, wherein displaying the identifier comprises: determining whether the input data comprises at least one pattern of a plurality of patterns associated with a predetermined category; and displaying the identifier on the display if the input data comprises the at least one pattern.
 78. The method of claim 75, comprising displaying a second interface associated with the secondary application on the display, and displaying the output data in the second interface. 